From Francesco: Added AliAnalysisTaskVnV0 and macros
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskVnV0.h
1 #ifndef ALIANALYSISTASKVNV0_H
2 #define ALIANALYSISTASKVNV0_H
3
4 // ROOT includes
5 #include <TObject.h>
6 #include <TClonesArray.h>
7 #include "TTree.h"
8 #include <TList.h>
9 #include <TProfile.h>
10
11 // AliRoot includes
12 #include <AliAnalysisTaskSE.h>
13 #include <AliAODEvent.h>
14 #include <AliCFContainer.h>
15 #include "AliFlowBayesianPID.h"
16
17 class TH2F;
18
19 class AliAnalysisTaskVnV0 : public AliAnalysisTaskSE {
20  public:
21   AliAnalysisTaskVnV0();
22   AliAnalysisTaskVnV0(const char *name);
23
24   virtual ~AliAnalysisTaskVnV0();
25
26   virtual void   UserCreateOutputObjects();
27   virtual void   UserExec(Option_t *option);
28   virtual void   Terminate(Option_t *); 
29   
30   Double_t GetVtxCut() { return fVtxCut; }   
31   Double_t GetEtaCut() { return fEtaCut; }     
32   Double_t GetMinPt() { return fMinPt; }   
33
34   virtual void  SetVtxCut(Double_t vtxCut){fVtxCut = vtxCut;}
35   virtual void  SetEtaCut(Double_t etaCut){fEtaCut = etaCut;}
36   virtual void  SetMinPt(Double_t value) {fMinPt = value;}   
37   virtual void SetV2(Bool_t val){fV2 = val;};
38   virtual void SetV3(Bool_t val){fV3 = val;};
39
40   void OpenInfoCalbration(Int_t run);
41
42  private:
43   AliAnalysisTaskVnV0(const AliAnalysisTaskVnV0 &);
44   AliAnalysisTaskVnV0 & operator=(const AliAnalysisTaskVnV0 &);
45
46   virtual Float_t GetVertex(AliAODEvent* aod) const;
47   virtual void Analyze(AliAODEvent* aodEvent, Float_t v0Centr); 
48
49   AliAODEvent* fAOD;                //! AOD object
50
51   static const Int_t nCentrBin = 9;          // # cenrality bins
52
53   //
54   // Cuts and options
55   //
56   Double_t     fVtxCut;             // Vtx cut on z position in cm
57   Double_t     fEtaCut;             // Eta cut used to select particles
58   Double_t     fMinPt;              // Min pt - for histogram limits
59
60   Int_t fRun;                       // current run checked to load VZERO calibrations
61
62   TList *fList,*fList2;             // List for output objects
63   //
64   // Output objects
65   TProfile *fMultV0;                // object containing VZERO calibration information
66   Float_t fV0Cpol,fV0Apol;          // loaded by OADB
67   Float_t fMeanQ[nCentrBin][2][2];           // and recentering
68   Float_t fWidthQ[nCentrBin][2][2];          // ...
69   Float_t fMeanQv3[nCentrBin][2][2];         // also for v3
70   Float_t fWidthQv3[nCentrBin][2][2];        // ...
71
72   AliCFContainer *fContAllChargesV0A;        // containers for v2 (A nd C) and v3 (A and C)
73   AliCFContainer *fContAllChargesV0C;        // ...
74   AliCFContainer *fContAllChargesV0Av3;      // ...
75   AliCFContainer *fContAllChargesV0Cv3;      // ...
76
77   TProfile *fHResTPCv0A2,*fHResTPCv0C2,*fHResv0Cv0A2;   // TProfile for subevent resolution (output)
78   TProfile *fHResTPCv0A3,*fHResTPCv0C3,*fHResv0Cv0A3;   // also for v3
79
80   TH2F *fPhiRPv0A,*fPhiRPv0C;          // EP distribution vs. centrality (v2)
81   TH2F *fPhiRPv0Av3,*fPhiRPv0Cv3;      // EP distribution vs. centrality (v3)
82
83   AliCFContainer *fPhiTracks;          // phi distribution of particles (if needed)
84
85
86   AliCFContainer *fQA,*fQA2;           // QA container (v2)
87   AliCFContainer *fQAv3,*fQA2v3;       // QA container (v3)
88
89   AliFlowBayesianPID *fPID;            // PID class for the Bayesian probabilities
90  
91   TTree *fTree;                        // tree to debug EP (if needed)
92
93   Float_t fCentrality;  // current centrality for the tree
94   Float_t evPlAngV0ACor2,evPlAngV0CCor2,evPlAng2;   // subevent EPs (v2)
95   Float_t evPlAngV0ACor3,evPlAngV0CCor3,evPlAng3;   // subevent EPs (v3)
96
97   Bool_t fV2,fV3; // swith to set the armonics
98
99   ClassDef(AliAnalysisTaskVnV0, 1);    //Analysis task v2 and v3 analysis on AOD
100 };
101
102 #endif