Commit for Simone
[u/mrichter/AliRoot.git] / PWGLF / STRANGENESS / LambdaK0PbPb / AliAnalysisTaskV0ForRAA.h
1 //-----------------------------------------------------------------
2 // AliAnalysisTaskV0ForRAA class
3 // This task is for analysing Lambda and K0s pt spectra in PbPb and
4 // pp as well as with MC. The flag for pp and MC  must be set
5 // accordingly, default is PbPb data.
6 // It works with ESD files only.
7 //-----------------------------------------------------------------
8
9 #ifndef ALIANALYSISTASKV0FORRAA_H
10 #define ALIANALYSISTASKV0FORRAA_H
11
12 class TH1F;
13 class TH2F;
14
15 class Tlist;
16
17 class AliESDv0;
18 class AliESDtrack;
19 class AliESDtrackCuts;
20 class AliESDpid;
21 class AliESDEvent;
22 class AliMCEvent;
23 class AliPIDResponse;
24
25 #ifndef ALIANALYSISTASKSE_H
26 #include "AliAnalysisTaskSE.h"
27 #endif
28
29
30 class AliAnalysisTaskV0ForRAA : public AliAnalysisTaskSE {
31  public:
32    
33   AliAnalysisTaskV0ForRAA(const char *name="AliAnalysisTaskV0ForRAA");
34   virtual ~AliAnalysisTaskV0ForRAA();
35   
36
37   virtual void  UserCreateOutputObjects();
38   virtual void  UserExec(Option_t *option);
39   virtual void  Terminate(Option_t *);
40
41
42
43   //-- MC truth/reco --//
44   void SetMCMode(Bool_t mcmode)                               {fMCMode = mcmode; if(fMCMode) Printf("AliAnalysisTaskV0ForRAA::running mc mode: histos of MC reco");}
45   void SetMCTruthMode(Bool_t mcmode)                          {fMCTruthMode = mcmode; if(fMCTruthMode) Printf("AliAnalysisTaskV0ForRAA::running mc mode: histos of MC truth");}
46   void SelectInjected(Bool_t injected)                        {fSelectInjected = injected; if(fSelectInjected) Printf("AliAnalysisTaskV0ForRAA::only injected MC particles");}
47   void SelectMBMotherMC(Bool_t mbmother)                      {fSelectMBMotherMC = mbmother;if(mbmother)  Printf("AliAnalysisTaskV0ForRAA::only MB mother MC for sec lambdas selected");}
48   void SelectOnlyPosLabelMC(Bool_t poslabel)                  {fCheckNegLabelReco = poslabel;if(poslabel) Printf("AliAnalysisTaskV0ForRAA::Select only MC truth and reco with pos label reco");}
49
50   void SelectOnlyFoundRecoV0MC(Bool_t found)                  {fOnlyFoundRecoV0 = found;if(found) Printf("AliAnalysisTaskV0ForRAA::Select only MC truth with found reco V0");}
51
52
53   //-- Centrality  --//
54   // use centrality - if yes, which one
55   void  SetUseCentrality(Int_t cent)                          {fUseCentrality = cent; Printf("AliAnalysisTaskV0ForRAA::centrality selected for detector %i (0=off, 1=VZERO, 2=SPD)",cent);}
56   // set range
57   void  SetUseCentralityRange(Int_t range)                    {fUseCentralityRange = range;if(fUseCentrality) Printf("AliAnalysisTaskV0::centrality range %i",fUseCentralityRange);}
58   // centrality bin to be used
59   void  SetUseCentralityBin(Int_t bin)                        {fUseCentralityBin = bin; if(fUseCentrality) Printf("AliAnalysisTaskV0ForRAA::centrality selected for bin %i",fUseCentralityBin); }
60
61
62   //-- event cuts --//
63   void SetPrimVertexZCut(Double_t vtxcut,Bool_t status)       {fVertexZCut = vtxcut;fVtxStatus = status; Printf("AliAnalysisTaskV0ForRAA::SetPrimVertexZCut %3.2f",vtxcut);}
64   void SetAnapp(Bool_t anapp)                                 {fAnapp = anapp ;if(fAnapp) Printf("AliAnalysisTaskV0ForRAA::analysing pp!!!");}
65   void SelectWithSDD(Bool_t sdd)                              {fSelSDD =sdd; if(sdd) Printf("AliAnalysisTaskV0ForRAA:: only events with SDD selected!");}
66   void SelectWithNoSDD(Bool_t sdd)                              {fSelNoSDD =sdd; if(sdd) Printf("AliAnalysisTaskV0ForRAA:: only events with NO SDD selected!");}
67
68   //-- track cuts --//
69   void SetESDTrackCuts(AliESDtrackCuts *esdcuts =NULL)        {fESDTrackCuts = esdcuts;Printf("AliAnalysisTaskV0ForRAA::AliESDtrackCuts for V0s set");}
70   void SetESDTrackCutsCharged(AliESDtrackCuts *esdcuts=NULL)  {fESDTrackCutsCharged = esdcuts;Printf("AliAnalysisTaskV0ForRAA::AliESDtrackCuts for charged particles set");}
71   void SetESDTrackCutsLowPt(AliESDtrackCuts *esdcuts=NULL)    {fESDTrackCutsLowPt = esdcuts;Printf("AliAnalysisTaskV0ForRAA::AliESDtrackCuts for low pt particles set");}
72   void SetUseOnthefly(Bool_t useonthefly)                     {fOntheFly = useonthefly; if(!fOntheFly) Printf("AliAnalysisTaskV0ForRAA::offline V0s");}
73   void SetUsePID(Bool_t usepid,Double_t nsigma=100.0,Double_t pcut=100.0) {fUsePID = usepid;fNSigma = nsigma;fPPIDcut = pcut; if(fUsePID) Printf("AliAnalysisTaskV0ForRAA::PID! of %4.2f for p: %4.2f",fNSigma,pcut);}
74   void SetCutMoreNclsThanRows(Bool_t cut)                     {fMoreNclsThanRows=cut; if(cut) Printf("AliAnalysisTaskV0ForRAA::cut on more ncls than crossed rows");}  
75   void SetCutMoreNclsThanFindable(Bool_t cut)                 {fMoreNclsThanFindable=cut; if(cut) Printf("AliAnalysisTaskV0ForRAA::cut on more ncls than ncls findable");}
76   void SetCutMoreNclsThanFindableMax(Bool_t cut)              {fMoreNclsThanFindableMax = cut; if(cut) Printf("AliAnalysisTaskV0ForRAA::cut on more ncls than ncls findable max");}
77
78   void SetRatioFoundOverFindable(Double_t cut)                 {fRatioFoundOverFindable = cut; Printf("AliAnalysisTaskV0ForRAA::cut on found over finable clusters %f",cut);}
79   void SetRatioMaxCRowsOverFindable(Double_t cut)              {fRatioMaxCRowsOverFindable = cut;  Printf("AliAnalysisTaskV0ForRAA::cut on max crossed rows over finable clusters %f",cut);}
80
81   void SetLowPtTPCCutAliESDTrackCut(Double_t pt)              {fPtTPCCut=pt;Printf("AliAnalysisTaskV0ForRAA::SetLowPtTPCCutAliESDTrackCut pt=%2.2f",pt);} 
82    
83   void SetMaxChi2PerITSCluster(Double_t chi2)                 {fChi2PerClusterITS = chi2; Printf("AliAnalysisTaskV0ForRAA::max chi2 per ITS cluster %3.2f",chi2);}
84   void SetRapidityCutMother(Bool_t cut,Double_t val=5.0)      {fRapCutV0 = cut; fRap = val; if(cut) Printf("AliAnalysisTaskV0ForRAA::cut on mother rapidity %2.2f",val);}
85   void SetMinPt(Double_t minPt=0.0)                           {fMinPt = minPt; if(minPt>0.0) Printf("AliAnalysisTaskV0ForRAA::cut on min pt %2.2f",minPt);}
86   /*  void SetPtShift(const Double_t shiftVal) {
87   //user defined shift in charge/pt
88   if(shiftVal) { fShift=kTRUE; fDeltaInvP = shiftVal; Printf("AliAnalysisTaskV0::WARNING!!!!!!!!!!!!!! pt shift introduced!");}
89   }
90   */
91   void SetDCAV0ToVertexK0(Double_t dcaTovertex)               {fDCAToVertexK0 = dcaTovertex; Printf("AliAnalysisTaskV0ForRAA::dca to vertex K0s %2.3f",dcaTovertex);}
92   void SetDCAV0ToVertexL(Double_t dcaTovertex)                {fDCAToVertexL = dcaTovertex; Printf("AliAnalysisTaskV0ForRAA::dca to vertex L/AL %2.3f",dcaTovertex);}
93   void SetDCADaughtersL(Double_t dcaDaughters)                {fDCADaughtersL = dcaDaughters; Printf("AliAnalysisTaskV0:ForRAA:dca daughters L %2.3f",dcaDaughters);}
94   void SetDCADaughtersAL(Double_t dcaDaughters)               {fDCADaughtersAL = dcaDaughters; Printf("AliAnalysisTaskV0ForRAA::dca daughters AL %2.3f",dcaDaughters);}
95   void SetDCADaughtersK0(Double_t dcaDaughters)               {fDCADaughtersK0 = dcaDaughters; Printf("AliAnalysisTaskV0ForRAA::dca daughters K0s %2.3f",dcaDaughters);}
96   void SetDCADaughtersLargeToVertex(Double_t dcaDaughtersVtx) {fDCADaughtersToVtxLarge = dcaDaughtersVtx; Printf("AliAnalysisTaskV0ForRAA::dca daughters to vertex large %2.3f",dcaDaughtersVtx);}
97   void SetDCADaughtersSmallToVertex(Double_t dcaDaughtersVtx) {fDCADaughtersToVtxSmall = dcaDaughtersVtx; Printf("AliAnalysisTaskV0ForRAA::dca daughters to vertex small %2.3f",dcaDaughtersVtx);}
98   void SetDecayRadiusXYMinMax(Double_t decMin,Double_t decMax){fDecayRadXYMin = decMin;fDecayRadXYMax = decMax; Printf("AliAnalysisTaskV0ForRAA::min xy decay radius %2.3f max %2.3f",decMin,decMax);}
99   void SetCosOfPointingAngleL(Double_t pointAng,Double_t ptMaxCut=100.0) {fCosPointAngL=pointAng;fCPAPtCutL = ptMaxCut;Printf("AliAnalysisTaskV0ForRAA::SetCosOfPointingAngleL %1.5f and pt max %2.2f",pointAng,ptMaxCut);} 
100   void SetCosOfPointingAngleK(Double_t pointAng,Double_t ptMaxCut=100.0) {fCosPointAngK=pointAng;fCPAPtCutK0 = ptMaxCut; Printf("AliAnalysisTaskV0ForRAA::SetCosOfPointingAngleK  %1.5f and pt max %2.2f",pointAng,ptMaxCut);}
101   void SetOpeningAngleCut(Double_t opang, Double_t maxpt)     {fOpengAngleDaughters=opang; fOpAngPtCut=maxpt,Printf("AliAnalysisTaskV0::cut on opening angle %1.3f up to pt= %2.2f",opang,maxpt);}
102
103   void SetMaxDecayLength(Double_t decLength)                  {fDecayLengthMax = decLength; Printf("AliAnalysisTaskV0ForRAA::SetMaxDecayLength %2.3f",decLength);}
104   void SetMinDecayLength(Double_t decLength)                  {fDecayLengthMin = decLength; Printf("AliAnalysisTaskV0ForRAA::SetMinDecayLength %2.3f",decLength);}
105   void SetDCAXK0(Double_t dcaXK)                              {fDCAXK = dcaXK; Printf("AliAnalysisTaskV0ForRAA::SetDCAXK0 %2.3f",dcaXK);}
106   void SetDCAYK0(Double_t dcaYK)                              {fDCAYK = dcaYK; Printf("AliAnalysisTaskV0ForRAA::SetDCAYK0 %2.3f",dcaYK);}
107   void SetDCAXLambda(Double_t dcaXL)                          {fDCAXL = dcaXL; Printf("AliAnalysisTaskV0ForRAA::SetDCAXLambda %2.3f",dcaXL);}
108   void SetDCAYLambda(Double_t dcaYL)                          {fDCAXL = dcaYL; Printf("AliAnalysisTaskV0ForRAA::SetDCAYLambda %2.3f",dcaYL);}
109   void SetDCAZ(Double_t dcaZ)                                 {fDCAZ = dcaZ; Printf("AliAnalysisTaskV0ForRAA::SetDCAZ %2.3f",dcaZ);}
110   void SetChi2CutKf(Bool_t chi2){ fChiCutKf = chi2; Printf("AliAnalysisTaskV0ForRAA::SetChi2CutKf %i",chi2);}
111   //Double_t chi2)                            {fChiCutKf = chi2; Printf("AliAnalysisTaskV0ForRAA::SetChi2CutKf %3.2f",chi2);}
112   void SetArmenterosCutAlpha(Double_t alfaMin)                {fAlfaCut=alfaMin;Printf("AliAnalysisTaskV0ForRAA::SetArmenterosCut a=%1.3f",alfaMin);}
113   void SetArmenterosCutQt(Double_t ptmin,Double_t ptmax,Bool_t k0s,Bool_t la,Double_t slope=0.2){fQtCut = ptmax;fQtCutPtLow=ptmin, fArmQtSlope=slope,fArmCutK0=k0s;fArmCutL=la;Printf("AliAnalysisTaskV0ForRAA::SetArmenterosCut ptmin = %3.2f ptmax = %3.2f. slope: %1.2f.  Is K0s? %i La? %i",ptmin,ptmax,slope,k0s,la);}
114   void SetMinMassDiffLK0s(Double_t diffK,Double_t diffL)                {fExcludeLambdaFromK0s = diffK;fExcludeK0sFromLambda = diffL; Printf("AliAnalysisTaskV0ForRAA::SetMaxMassDifferenceL for K0s %1.3f  K0s for L %1.3f",diffK,diffL);}
115
116   void SetCtauCut(Double_t ctK0s, Double_t ctL,Double_t ptK0=100.0,Double_t ptL=100.0) {fCtauK0s = ctK0s*2.6842; fCtauL = ctL*7.89;fCtauPtCutK0=ptK0; fCtauPtCutL=ptL;
117     Printf("AliAnalysisTaskV0ForRAA::SetCtauCut ctK=%2.2f, ctL = %2.2f for ptK= %5.2f ptL=%5.2f",ctK0s,ctL,ptK0,ptL);}
118   void SetDoEtaOfMCDaughtersCut(Bool_t doCut,Double_t eta=5.0){fEtaCutMCDaughters =doCut; fEtaCutMCDaughtersVal=eta; Printf("AliAnalysisTaskV0ForRAA::eta cut on V0 (MC truth ? %i) daughters %1.3f !",doCut,eta);}
119   //  void SetEtaSignCut(Double_t etasign)                        {fEtaSignCut = etasign;Printf("AliAnalysisTaskV0ForRAA::eta cut sign on  daughters %2.2f !",etasign);}
120
121   
122  private:
123    
124   //----------------------------functions --------------------------------------------//
125
126   void   Process();                                                                                                   // process event
127   void   V0RecoLoop(Int_t id0,Int_t id1,Int_t isSecd,Int_t what,Double_t ptV0MC,Int_t pdgMother,Double_t ptXiMother,Double_t decaylengthMCV0); // loop over reconstructed V0 (data or MC)
128   void   V0MCTruthLoop();                                                                                             // loop over MC truth V0s
129   Int_t  CalculateCentralityBin();                                                                                    // get the centrality bin from multiplicity
130   Bool_t GetMCTruthPartner(AliESDtrack *pos,AliESDtrack *neg,Int_t id0,Int_t id1);                                    // find MC truth partner for reconstructed track
131
132
133    
134   //----------------------------- objects ----------------------------------------------//
135
136   //event
137   AliESDEvent     *fESD;                 // ESD event object
138   AliMCEvent      *fMCev;                // MC event object
139
140   
141   //PID and track cuts
142   AliPIDResponse  *fESDpid;              // pid object
143   AliESDtrackCuts *fESDTrackCuts;        // esd track cuts for daughters
144   AliESDtrackCuts *fESDTrackCutsCharged; // esd track cuts for all charged particles
145   AliESDtrackCuts *fESDTrackCutsLowPt;   // esd track cuts for daughters at low pt
146
147   TList           *fOutputContainer;     // output data container
148    
149
150
151   //----------------------------histograms --------------------------------------------//
152
153   //---------------------------event histos --------------------------//
154   TH1F   *fHistITSLayerHits;                        // pp 2.76 TeV analysis: check hist on div. ITS layer
155   TH1F   *fHistOneHitWithSDD;                       // pp 2.76 TeV analysis: check hist on at least one ITS layer
156   TH1F   *fHistNEvents;                             // count number of events for each event cut
157   TH2F   *fHistPrimVtxZESDVSNContributors;          // count contributors to ESD vertex
158   TH2F   *fHistPrimVtxZESDTPCVSNContributors;       // count contributors to TPC vertex
159   TH2F   *fHistPrimVtxZESDSPDVSNContributors;       // count contributors to SPD vertex
160
161   TH2F   *fHistPrimVtxZESDVSNContributorsMC;        // count contributors to ESD vertex MC
162   TH2F   *fHistPrimVtxZESDTPCVSNContributorsMC;     // count contributors to TPC vertex MC
163   TH2F   *fHistPrimVtxZESDSPDVSNContributorsMC;     // count contributors to SPD vertex MC
164
165   TH1F   *fHistPrimVtxZESD;                         // primary ESD vertex position z after cuts and processing
166   TH1F   *fHistPrimVtxZESDTPC;                      // primary TPC vertex position z after cuts and processing
167   TH1F   *fHistPrimVtxZESDSPD;                      // primary SPD vertex position z after cuts and processing
168
169   TH1F   *fHistESDVertexZ;                          // primary TPC vertex position z before cuts
170   TH1F   *fHistMCVertexZ;                           // primary MC vertex position z 
171    
172   TH1F   *fHistMuliplicity;                         // number of particles from centrality selection
173   TH1F   *fHistMuliplicityRaw;                      // number of particles from centrality selection before processing
174   TH1F   *fHistCentBinRaw;                          // events per centralitybin before centrality selection
175   TH1F   *fHistCentBin;                             // events per centralitybin
176   TH1F   *fHistMultiplicityPrimary;                 // number of charged particles
177    
178   TH1F   *fHistNPrim;                               // number of contributors to the prim vertex
179
180
181   //------------------------ single V0 histos MC case--------------------------//
182   //K0s
183   TH1F   *fHistPiPiPDGCode;                         // PDG code of K0 mothers
184  
185   //Lambda
186   TH1F   *fHistPiPPDGCode;                          // PDG code of Lambda mothers 
187   TH2F   *fHistPiPCosPointAngXiVsPt;                // p+pi- cosine of pointing angle of xis vs pt
188   TH2F   *fHistPiPMassVSPtSecXiMCTruth;             // p+pi- InvMass spectrum vs Xi (-,0) pt MC truth
189   TH2F   *fHistPiPMassVSPtSecOmegaMCTruth;          // p+pi- InvMass spectrum vs Omega (-)  pt MC truth
190   
191   //AntiLambda
192   TH1F   *fHistPiAPPDGCode;                         // PDG code of AntiLambda mothers
193   TH2F   *fHistPiAPCosPointAngXiVsPt;               // p-pi+ cosine of pointing angle of xis vs pt
194   TH2F   *fHistPiAPMassVSPtSecXiMCTruth;            // p-pi+ InvMass spectrum vs Xi (+,anti 0) pt MC truth
195   TH2F   *fHistPiAPMassVSPtSecOmegaMCTruth;         // p-pi+ InvMass spectrum vs Omega (+)  pt MC truth
196
197
198   //----------------------------- V0 histos --------------------------------------//
199   TH2F   *fHistV0RadiusZ[2];                        // V0 decay radius z filled for K0s and Lambda candidates
200   TH2F   *fHistV0RadiusZVSPt[2];                    // V0 decay radius z vs pt filled for K0s and Lambda candidates
201   TH2F   *fHistV0RadiusXY[2];                       // V0 decay radius x vs y filled for K0s and Lambda candidates
202   TH2F   *fHistV0RadiusXYVSY[2];                    // V0 decay radius xy vs rapidity filled for K0s and Lambda candidates
203    
204   TH2F   *fHistArmenteros[2];                       // armenteros podolanski filled for K0s and Lambda candidates
205      
206   //-- K0 --//
207   TH1F   *fHistPiPiMass[1];                         // pi+pi- InvMass spectrum
208   TH2F   *fHistPiPiPtVSY[1];                        // pi+pi- InvMass spectrum vs rapidity
209   TH2F   *fHistPiPiMassVSPt[1];                     // pi+pi- InvMass spectrum vs pt
210   TH2F   *fHistPiPiMassVSPtMCTruth[1];              // pi+pi- InvMass spectrum vs pt MC truth
211   // TH2F   *fHistPiPiMassVSAlpha[1];               // pi+pi- InvMass spectrum vs armenteros alpha
212   TH2F   *fHistPiPiRadiusXY[1];                     // pi+pi- opening angle vs mass
213   TH2F   *fHistPiPiCosPointAng[1];                  // pi+pi- cosine of pointing angle vs pt or dca to vertex
214   TH2F   *fHistPiPiDCADaughterPosToPrimVtxVSMass[1];// dca of pos. K0s daughter to prim vtx vs mass
215   TH2F   *fHistPiPiDecayLengthVsPt[1];              // pi+pi- decay lenght vs pt
216   TH2F   *fHistPiPiDecayLengthVsMass[1];            // pi+pi- decay lenght vs pt
217   TH2F   *fHistPiPiDecayLengthVsCtau[1];            // pi+pi- decay lenght vs pt
218   TH2F   *fHistPiPiDCADaughters[1];                 // pi+pi- dca between daughters
219   //  TH2F   *fHistPiPiPtDaughters[1];              // pi+pi- daughters pt pos vs pt neg 
220   TH2F   *fHistPiPiDCAVSMass[1];                    // pi+pi- dca to prim vtx vs mass
221   TH1F   *fHistPiPiMonitorCuts[1];                  // pi+pi- cut monitor
222   TH1F   *fHistPiPiMonitorMCCuts[1];                // pi+pi- cut monitor mc
223   TH2F   *fHistPiPiDecayLengthResolution[1];        // decay length mc reco vs mc truth K0s
224
225   //-- Lambda --//
226   TH1F   *fHistPiPMass[2];                          // p+pi- InvMass spectrum
227   TH2F   *fHistPiPPtVSY[2];                         // p+pi- InvMass spectrum vs rapidity
228   TH2F   *fHistPiPMassVSPt[2];                      // p+pi- InvMass spectrum vs pt
229   TH2F   *fHistPiPMassVSPtMCTruth[2];               // p+pi- InvMass spectrum vs pt MC truth
230   TH2F   *fHistPiPRadiusXY[2];                      // p+pi- opening angle vs mass
231   TH2F   *fHistPiPCosPointAng[2];                   // p+pi- cosine of pointing angle vs pt  or dca to vertex
232   TH2F   *fHistPiPDCADaughterPosToPrimVtxVSMass[2]; // dca of pos. Lambda daughter to prim vtx vs mass
233   TH2F   *fHistPiPDecayLengthVsPt[2];               // p+pi- decay lenght vs pt
234   TH2F   *fHistPiPDecayLengthVsMass[2];             // p+pi- decay lenght vs pt
235   TH2F   *fHistPiPDecayLengthVsCtau[2];             // p+pi- decay lenght vs pt
236   TH2F   *fHistPiPDCADaughters[2];                  // p+pi- dca between daughters
237   //  TH2F   *fHistPiPPtDaughters[2];               // p+pi- daughters pt pos vs pt neg 
238   TH2F   *fHistPiPDCAVSMass[2];                     // p+pi- dca to prim vtx vs mass
239   TH1F   *fHistPiPMonitorCuts[2];                   // p+pi- cut monitor
240   TH1F   *fHistPiPMonitorMCCuts[2];                 // p+pi- cut monitor mc
241   TH2F   *fHistPiPMassVSPtSecSigma[2];              // InvMass distribution vs pt of secondary lambdas from sigma truth(0) reco(1)
242   TH2F   *fHistPiPMassVSPtSecXi[2];                 // InvMass distribution vs pt of secondary lambdas from xi MC truth(0) reco(1)
243   TH2F   *fHistPiPMassVSPtSecOmega[2];              // InvMass distribution vs pt of secondary lambdas from omega MC truth(0) reco(1)
244   TH2F   *fHistPiPMassVSYSecXi[2];                  // InvMass distribution vs rapidity of secondary lambdas from xi MC truth(0) reco(1)
245   TH2F   *fHistPiPXi0PtVSLambdaPt[2] ;              // pt of xi0 vs pt lambda truth(0) reco(1)
246   TH2F   *fHistPiPXiMinusPtVSLambdaPt[2];           // pt of ximinus vs pt lambda truth(0) reco(1)
247   TH2F   *fHistPiPOmegaPtVSLambdaPt[2];             // pt of omega plus vs pt alambda truth(0) reco(1)
248   TH2F   *fHistPiPDecayLengthResolution[2];         // decay length mc reco vs mc truth lambda
249
250   //-- AntiLambda --//
251   TH1F   *fHistPiAPMass[2];                         // pi+p- InvMass spectrum
252   TH2F   *fHistPiAPPtVSY[2];                        // pi+p- InvMass spectrum vs rapidity
253   TH2F   *fHistPiAPMassVSPt[2];                     // pi+p- InvMass spectrum vs pt
254   TH2F   *fHistPiAPMassVSPtMCTruth[2];              // pi+p- InvMass spectrum vs pt MC Truth
255   TH2F   *fHistPiAPRadiusXY[2];                     // pi+p- opening angle vs mass
256   TH2F   *fHistPiAPCosPointAng[2];                  // pi+p- cosine of pointing angle vs pt  or dca to vertex
257   TH2F   *fHistPiAPDCADaughterPosToPrimVtxVSMass[2];// dca of pos. Lambda daughter to prim vtx vs mass
258   TH2F   *fHistPiAPDecayLengthVsPt[2];              // pi+p- decay lenght vs pt
259   TH2F   *fHistPiAPDecayLengthVsMass[2];            // pi+p- decay lenght vs pt
260   TH2F   *fHistPiAPDecayLengthVsCtau[2];            // pi+p- decay lenght vs pt
261   TH2F   *fHistPiAPDCADaughters[2];                 // pi+p- dca between daughters
262   //  TH2F   *fHistPiAPPtDaughters[2];              // pi+p- daughters pt pos vs pt neg 
263   TH2F   *fHistPiAPDCAVSMass[2];                    // pi+p- dca to prim vtx vs mass
264   TH1F   *fHistPiAPMonitorCuts[2];                  // pi+p- cut monitor
265   TH1F   *fHistPiAPMonitorMCCuts[2];                // pi+p- cut monitor mc
266   TH2F   *fHistPiAPMassVSPtSecSigma[2];             // InvMass distribution vs pt of secondary alambdas from sigma truth(0) reco(1)
267   TH2F   *fHistPiAPMassVSPtSecXi[2];                // InvMass distribution vs pt of secondary alambdas from xi MC truth(0) reco(1)
268   TH2F   *fHistPiAPMassVSPtSecOmega[2];             // InvMass distribution vs pt of secondary alambdas from omega MC truth(0) reco(1)
269   TH2F   *fHistPiAPMassVSYSecXi[2];                 // InvMass distribution vs rapidity of secondary alambdas from xi MC truth(0) reco(1)
270   TH2F   *fHistPiAPXi0PtVSLambdaPt[2] ;             // pt of xi0 vs pt alambda truth(0) reco(1)
271   TH2F   *fHistPiAPXiMinusPtVSLambdaPt[2];          // pt of ximinus vs pt alambda truth(0) reco(1)
272   TH2F   *fHistPiAPOmegaPtVSLambdaPt[2];            // pt of omega plus vs pt alambda truth(0) reco(1)
273   TH2F   *fHistPiAPDecayLengthResolution[2];        // decay length mc reco vs mc truth antilambda
274
275   //-- others --//
276   //dEdx
277   TH2F   *fHistDedxSecProt[2];                      // dedx from proton cadidates vs pt
278   TH2F   *fHistDedxSecAProt[2];                     // dedx from antiproton candidates vs pt
279   TH2F   *fHistDedxSecPiMinus[2];                   // dedx from pi minus candidates vs pt
280   TH2F   *fHistDedxSecPiPlus[2];                    // dedx from pi plus candidates vs pt
281
282   TH2F   *fHistDedxProt[2];                         // dedx from proton cadidates vs pt before pidcut
283   TH2F   *fHistDedxAProt[2];                        // dedx from antiproton candidates vs pt before pidcut
284   TH2F   *fHistDedxPiMinus[2];                      // dedx from pi minus candidates vs pt before pidcut
285   TH2F   *fHistDedxPiPlus[2];                       // dedx from pi plus candidates vs pt before pidcut
286    
287   //----------clusters and TPC var.------------//
288   //K0s
289   TH1F   *fHistNclsITSPosK0[1];                     // number of clusters from ITS of positive K0s daughters
290   TH1F   *fHistNclsITSNegK0[1];                     // number of clusters from ITS of negative K0s daughters
291   TH1F   *fHistNclsTPCPosK0[1];                     // number of clusters from TPC of positive K0s daughters
292   TH1F   *fHistNclsTPCNegK0[1];                     // number of clusters from TPC of negative K0s daughters
293   TH1F   *fHistChi2PerNclsITSPosK0[1];              // chi^2 per number of clusters ITS of positive K0s daughters
294   TH1F   *fHistChi2PerNclsITSNegK0[1];              // chi^2 per number of clusters ITS of negative K0s daughters
295   //Lambda
296   TH1F   *fHistNclsITSPosL[2];                      // number of clusters from ITS of positive lambda daughters
297   TH1F   *fHistNclsITSNegL[2];                      // number of clusters from ITS of negative lambda daughters
298   TH1F   *fHistNclsTPCPosL[2];                      // number of clusters from TPC of positive lambda daughters
299   TH1F   *fHistNclsTPCNegL[2];                      // number of clusters from TPC of negative lambda daughters
300   TH1F   *fHistChi2PerNclsITSPosL[2];               // chi^2 per number of clusters ITS of positive lambda daughters
301   TH1F   *fHistChi2PerNclsITSNegL[2];               // chi^2 per number of clusters ITS of negative lambda daughters
302   //general
303   TH2F   *fHistNclsITSPos[2];                       // number of clusters from ITS of positive daughters vs pt dautghter
304   TH2F   *fHistNclsITSNeg[2];                       // number of clusters from ITS of negative daughters vs pt dautghter
305   TH2F   *fHistNclsTPCPos[2];                       // number of clusters from TPC of positive daughters vs number of finabale clutsters
306   TH2F   *fHistNclsTPCNeg[2];                       // number of clusters from TPC of negative daughters vs number of finabale clutsters
307   TH2F   *fHistChi2PerNclsITSPos[2];                // chi^2 per number of clusters ITS of positive daughters vs pt of daughter
308   TH2F   *fHistChi2PerNclsITSNeg[2];                // chi^2 per number of clusters ITS of negative daughters  vs pt of daughter
309   TH2F   *fHistNclsITS[2];                          // number of clusters ITS pos vs neg daughters
310   TH2F   *fHistNclsTPC[2];                          // number of clusters TPC  neg daughters vs number of crossed rows
311   TH2F   *fHistNCRowsTPCPos[2];                     // number of crossed rows TPC pos. vs pt of daughter
312   TH2F   *fHistNCRowsTPCNeg[2];                     // number of crossed rows TPC neg. vs pt of daughter
313   TH2F   *fHistRatioFoundOverFinableTPCK0[2];       // ratio of ncls findable over found TPC K0s daughters
314   TH2F   *fHistRatioFoundOverFinableTPCL[2];        // ratio of ncls findable over found TPC L daughters
315   //eta all 
316   TH2F   *fHistPiPiEtaDMC[2];                       // eta of daughters vs pt K0s MC truth raw(0) after cuts(1)
317   TH2F   *fHistPiPEtaDMC[2];                        // eta of daughters vs pt lambda MC truth raw(0) after cuts(1)
318   TH2F   *fHistPiPiEtaDReco[2];                     // eta of daughters ESD track vs eta AliESDv0 or vs pt K0s raw(0) after cuts(1)
319   TH2F   *fHistPiPEtaDReco[2];                      // eta of daughters ESD track vs eta AliESDv0 or vs  pt (a)lambda raw(0) after cuts(1)
320
321   /*
322   //user shift
323   TH1F   *fHistUserPtShift;//monitor user defined charge/pt shift
324   */
325
326
327    
328   //---------------------------------- Variables--------------------------------------------//
329
330   //--cut options --//
331   //MC only
332   Bool_t    fMCMode;                   // run over MC general yes/no
333   Bool_t    fMCTruthMode;              // MC truth selection yes/no
334   Bool_t    fSelectInjected;           // for MC with injected signals, select only injected
335   Bool_t    fSelectMBMotherMC;         // for MC with injected signals, select only MB MC mother for sec. Lambdas
336   Bool_t    fCheckNegLabelReco;        // reject MC truth and reco for neg labels in reco
337   Bool_t    fOnlyFoundRecoV0;          // reject MC truth if reco V0 not found
338
339   // Calculate centrality
340   Int_t     fUseCentrality;            // use centrality (0=off(default),1=VZERO,2=SPD)
341   Int_t     fUseCentralityBin;         // centrality bin to be used 
342   Int_t     fUseCentralityRange;       // use centrality (0=off(default),1=VZERO,2=SPD) 
343
344   //pp analysis
345   Bool_t    fAnapp;                    // flag for pp analysis
346   Bool_t    fSelSDD;                   // select pp events with SDD (for pp 2.76TeV LHC11a)
347   Bool_t    fSelNoSDD;                 // select pp events with no SDD (for pp 2.76TeV LHC11a)
348
349   //onthefly
350   Bool_t    fOntheFly;                 // true if onfly finder shall be used
351
352   //vertex
353   Double_t  fVertexZCut;               // z vertex cut value
354   Bool_t    fVtxStatus;                // vertex cut on/off
355
356   //PID
357   Bool_t    fUsePID;                   // use pid yes/no
358   Double_t  fNSigma;                   // set nsigma value
359   Double_t  fPPIDcut;                  // set max momentum for pid cut usage 
360   Double_t  fPtTPCCut;                 // low pt limit cut for TPC cluster cuts from AliESDtrackCuts
361   Bool_t    fMoreNclsThanRows;         // cut on ncls>ncrossed rows yes/no
362   Bool_t    fMoreNclsThanFindable;     // cut on ncls>nfindable cls yes/no
363   Bool_t    fMoreNclsThanFindableMax;  // cut on ncls>nfindable max cls yes/no
364   Double_t  fRatioFoundOverFindable;   // cut on found over findable clusters TPC
365   Double_t  fRatioMaxCRowsOverFindable;// cut on crossed rows over finable max
366   Double_t  fChi2PerClusterITS;        // cut on chi2 per ITS cluster
367    
368   //rapidity
369   Bool_t    fRapCutV0;                 // use rapidity cut for V0 yes/no
370   Double_t  fRap;                      // user defined value for rapidity cut
371
372   //eta and pt
373   Double_t  fEtaCutMCDaughters;        // eta cut for MC daughters on/off
374   Double_t  fEtaCutMCDaughtersVal;     // eta cut value for MC daughters
375   // Double_t  fEtaSignCut;            // eta cutsign daughters
376   Double_t  fMinPt;                    // pt min cut value 
377
378   //armenteros
379   Double_t  fAlfaCut;                  // set alpha armenteros cut value
380   Double_t  fQtCut;                    // set ptmax for qt armenteros cut 
381   Double_t  fQtCutPtLow;               // set ptmin for  qt armenteros cut
382   Bool_t    fArmCutK0;                 // set armenteros cut on/off for K0s
383   Bool_t    fArmCutL;                  // set armenteros cut on/off for Lambda
384   Double_t  fArmQtSlope;               // slope for armenteros K0s cut: qt = alpha*slope
385   //others
386   Double_t  fExcludeLambdaFromK0s;     // exlude Lambda mass from K0s throuh mass difference below this value
387   Double_t  fExcludeK0sFromLambda;     // exlude K0s mass from Lambda throuh mass difference below this value
388   Double_t  fDCAToVertexK0;            // dca of V0 to vertex cut value K0s
389   Double_t  fDCAToVertexL;             // dca of V0 to vertex cut value L/AL
390   Double_t  fDCAXK;                    // dca in x of K0s to vertex cut value
391   Double_t  fDCAYK;                    // dca in y of K0s to vertex cut value
392   Double_t  fDCAXL;                    // dca in x of Lambda to vertex cut value
393   Double_t  fDCAYL;                    // dca in y of Lambda to vertex cut value
394   Double_t  fDCAZ;                     // dca in z of V0 to vertex cut value
395   
396   Double_t  fDCADaughtersL;            // dca between Lambda daughters cut value
397   Double_t  fDCADaughtersAL;           // dca between ALambda daughters cut value
398   Double_t  fDCADaughtersK0;           // dca between K0s daughters cut value
399   
400   Double_t  fDCADaughtersToVtxLarge;   // dca large between V0 daughters and vertex cut value
401   Double_t  fDCADaughtersToVtxSmall;   // dca small between V0 daughters and vertex cut value
402   
403   Double_t  fDecayRadXYMin;            // minmal decay radius in x-y cut value
404   Double_t  fDecayRadXYMax;            // maximal decay radius in x-y cut value
405   
406   Double_t  fCosPointAngL;             // cosine of pointing angle cut value for Lambda and ALambda
407   Double_t  fCosPointAngK;             // cosine of pointing angle cut value for K0s
408   Double_t  fCPAPtCutK0;               // pt max for cosine of pointing angle cut K0s
409   Double_t  fCPAPtCutL;                // pt max for cosine of pointing angle cut Lambda
410   Double_t  fOpengAngleDaughters;      // cut on opening angle between V0 daughters
411   Double_t  fOpAngPtCut;               // max pt for using the  opening angle between V0 daughters cut
412     
413   Double_t  fDecayLengthMax;           // maximal decay length in x-y-z cut value
414   Double_t  fDecayLengthMin;           // minimal decay length in x-y-z cut value
415
416   //ctau
417   Double_t  fCtauK0s;                  // multiple of ctau cut value for K0s
418   Double_t  fCtauL;                    // multiple of ctau cut value for Lambda
419   Double_t  fCtauPtCutK0;              // pt max for ctau cut usage for K0s
420   Double_t  fCtauPtCutL;               // pt max for ctau cut usage for Lambda
421
422   //KF particle chi cut
423   //   Double_t  fChiCutKf;            // cut value of chi2 of AliKFParticle
424   Bool_t  fChiCutKf;                   // cut value of chi2 of AliKFParticle
425
426   
427   /*
428   // option for user defined charge/pt shift
429   Bool_t     fShift;// shift yes/no
430   Double_t   fDeltaInvP;//define shift value
431   */
432  
433
434   AliAnalysisTaskV0ForRAA(const AliAnalysisTaskV0ForRAA&);
435   AliAnalysisTaskV0ForRAA&operator=(const AliAnalysisTaskV0ForRAA&);
436    
437   ClassDef(AliAnalysisTaskV0ForRAA, 0); 
438 };
439 #endif