ca5497974c34eadf663ceef7e8b8cb49deb879bd
[u/mrichter/AliRoot.git] / PWGPP / pid / AliAnalysisTaskLambdaBayes.h
1 #ifndef ALIANALYSISTASKLAMBDABAYES_H
2 #define ALIANALYSISTASKLAMBDABayes_H
3
4 // ROOT includes
5 #include <TObject.h>
6 #include <TClonesArray.h>
7 #include <TList.h>
8 #include <TProfile.h>
9 #include "AliPIDCombined.h"
10 #include "TF1.h"
11
12 // AliRoot includes
13 #include <AliAnalysisTaskSE.h>
14 #include <AliAODEvent.h>
15 #include "AliPIDperfContainer.h"
16
17 class TH1F;
18 class TH2F;
19 class AliESDtrackCuts;
20
21 class AliAnalysisTaskLambdaBayes : public AliAnalysisTaskSE {
22  public:
23   AliAnalysisTaskLambdaBayes();
24   AliAnalysisTaskLambdaBayes(const char *name);
25
26   virtual ~AliAnalysisTaskLambdaBayes();
27
28   virtual void   UserCreateOutputObjects();
29   virtual void   UserExec(Option_t *option);
30   virtual void   Terminate(Option_t *); 
31   
32   Double_t GetVtxCut() { return fVtxCut; }   
33   Double_t GetEtaCut() { return fEtaCut; }     
34   Double_t GetMinPt() { return fMinPt; }   
35
36   virtual void  SetVtxCut(Double_t vtxCut){fVtxCut = vtxCut;}
37   virtual void  SetEtaCut(Double_t etaCut){fEtaCut = etaCut;}
38   virtual void  SetMinPt(Double_t value) {fMinPt = value;}   
39
40   virtual void SetMC(Bool_t flag = kTRUE){fIsMC = flag;};
41   virtual void SetQA(Bool_t flag = kTRUE){fQAsw = flag;};
42
43   void SetTPCclusterN(Int_t ncl){fNcluster=ncl;};
44
45   static const Int_t nPtBin = 13;  //! # pt ks bins
46
47   void SetFilterBit(Int_t fb){fFilterBit=fb;};
48   Int_t GetFilterBit() const {return fFilterBit;};
49
50   void SetTypeCollisions(Int_t type){fTypeCol = type;}; // 0=pp, 1=pPb, 2=PbPb
51   Int_t GetTypeCollisions() const {return fTypeCol;}; 
52
53  private:
54   AliAnalysisTaskLambdaBayes(const AliAnalysisTaskLambdaBayes &old); 
55   AliAnalysisTaskLambdaBayes& operator=(const AliAnalysisTaskLambdaBayes &source); 
56
57   Int_t PassesAODCuts(AliAODv0 *myV0, AliAODEvent *tAOD,Int_t specie);
58   Int_t FindDaugheterIndex(AliAODTrack *trk);
59
60   virtual Float_t GetVertex(AliAODEvent* aod) const;
61   virtual void Analyze(AliAODEvent* aodEvent); 
62   virtual Int_t IsChannelValid(Float_t etaAbs);
63   virtual void SelectLambda();
64
65   Double_t     fVtxCut;             // Vtx cut on z position in cm
66   Double_t     fEtaCut;             // Eta cut used to select particles
67   Double_t     fMinPt;              // Min pt - for histogram limits
68
69   Bool_t fIsMC; // if MC
70   Bool_t fQAsw;   // if QA
71
72   static const Int_t nCentrBin = 9; //! # cenrality bins
73
74   //
75   // Cuts and options
76   //
77
78   Int_t fNcluster;           // Numer of TPC cluster required
79   Int_t fFilterBit;          // filter bit to be used
80   TList *fList;              //! List for output objects
81   TList *fList2;             //! List for output objects
82   TList *fList3;             //! List for output objects
83
84   //
85   Float_t fCentrality;  //! current centrality for the tree
86   Float_t fPsi;         //! current Psi from TPC
87
88   Float_t fPtLambdaC;   //! variable to fill the tree
89   Float_t fPhiLambdaC;  //! variable to fill the tree
90   Float_t fEtaLambda;  //! variable to fill the tree
91   Float_t fMassV0; //! variable to fill the tree
92   Float_t fPtKp;  //! variable to fill the tree
93   Float_t fPhiKp; //! variable to fill the tree
94   Float_t fEtaKp; //! variable to fill the tree
95   Float_t fPtKn;  //! variable to fill the tree
96   Float_t fPhiKn; //! variable to fill the tree
97   Float_t fEtaKn; //! variable to fill the tree
98   Int_t fPidKp;   //! variable to fill the tree
99   Int_t fPidKn;   //! variable to fill the tree
100
101   TH2F *hMatching[4]; //! matching (all, pi, k ,p)
102   TH2F *hTracking[4]; //! tracking (all, pi, k ,p)
103  
104   TH2F *fTOFTPCsignal;   //! histo with tof signal
105   TH1F *fCombsignal;   //! histo with tof signal
106
107   static Float_t fPtLambdaMin[nPtBin];// ptmin bin
108   static Float_t fPtLambdaMax[nPtBin];// ptmax bin
109
110   // QA plots
111   TH2F *fPiTPC[nCentrBin];//! TPC dE/dx plot
112   TH2F *fKaTPC[nCentrBin];//! TPC dE/dx plot
113   TH2F *fPrTPC[nCentrBin];//! TPC dE/dx plot
114   TH2F *fElTPC[nCentrBin];//! TPC dE/dx plot
115
116   TH2F *fPiTOF[nCentrBin];//! TPC dE/dx plot
117   TH2F *fKaTOF[nCentrBin];//! TPC dE/dx plot
118   TH2F *fPrTOF[nCentrBin];//! TPC dE/dx plot
119   TH2F *fElTOF[nCentrBin];//! TPC dE/dx plot
120
121   AliESDtrackCuts *fCutsDaughter;
122
123   AliPIDCombined *fPIDCombined;  //! PID combined object
124   AliPIDperfContainer* fContPid;      //! results for positive
125   AliPIDperfContainer* fContPid2;     //! results for negative
126
127   Int_t fNLambda; //! number of Lambda in my private selection
128   Float_t fPhiLambda[1000]; //! phi of Lambda in my private selection
129   Float_t fPtLambda[1000];//! pt of Lambda in my private selection
130   Int_t fNpPos; //! number of positive pions for Lambda selection
131   Int_t fNpNeg; //! number of negative pions for Lambda selection
132   Int_t fIPPos[1000]; //! position in the AOD stack of positive pions candidates
133   Int_t fIPNeg[1000]; //! position in the AOD stack of negative pions candidates
134   Int_t fIpP[1000]; //! position in the AOD stack of positive pions for Lambda
135   Int_t fIpN[1000]; //! position in the AOD stack of negative pions for Lambda
136   Float_t fMassLambda[1000]; //! Lambda mass
137   
138   TH1F *fHmismTOF; //! TOF mismatch distribution
139   TH1D *fHchannelTOFdistr; //! TOF channel distance w.r.t. IP
140
141   Int_t fTypeCol; // type of collision system (0=pp, 1=pPb, 2=PbPb)
142
143   ClassDef(AliAnalysisTaskLambdaBayes, 2);    //Analysis task for Bayesian (Lambda)
144 };
145
146 #endif