043942f1c6083e260cb79ec20afb8a9f83893e9b
[u/mrichter/AliRoot.git] / PWGLF / SPECTRA / PiKaPr / TestAOD / AliAnalysisTaskV2AllChAOD.h
1 #ifndef ALIANALYSISTASKV2ALLCHAOD_H
2 #define ALIANALYSISTASKV2ALLCHAOD_H
3
4 /*  See cxx source for full Copyright notice */
5
6 //-------------------------------------------------------------------------
7 //                      AliAnalysisTaskV2AllChAOD
8 //
9 //
10 //
11 //
12 // Author: Leonardo Milano, CERN
13 //-------------------------------------------------------------------------
14
15 class AliAODEvent;
16 class AliSpectraAODTrackCuts;
17 class AliSpectraAODEventCuts;
18
19 #include "AliAnalysisTaskSE.h"
20 #include <TProfile.h>
21
22 class AliAnalysisTaskV2AllChAOD : public AliAnalysisTaskSE
23 {
24  public:
25   // constructors
26  AliAnalysisTaskV2AllChAOD() : AliAnalysisTaskSE(),
27     fAOD(0x0),
28     fTrackCuts(0x0),
29     fEventCuts(0x0),
30     fIsMC(0),
31     fCharge(0),
32     fVZEROside(0),
33     fOutput(0x0),
34     fOutput_lq(0x0),
35     fOutput_sq(0x0),
36     fnCentBins(20),
37     fnQvecBins(40),
38     fIsQvecCalibMode(0),
39     fQvecUpperLim(100),
40     fCutLargeQperc(9.),
41     fCutSmallQperc(10.),
42     fEtaGapMin(-0.5),
43     fEtaGapMax(0.5),
44     fTrkBit(272),
45     fEtaCut(0.8),
46     fMinPt(0),
47     fMaxPt(20.0),
48     fMinTPCNcls(70),
49     fFillTHn(kTRUE),
50     fResSP(0),
51     f2dResSP(0),
52     fResSP_vs_Cent(0),
53     f2partCumQA_vs_Cent(0),
54     f2partCumQB_vs_Cent(0),
55     fEta_vs_Phi_bef(0),
56     fEta_vs_PhiA(0),
57     fEta_vs_PhiB(0),
58     fResSP_lq(0),
59     f2dResSP_lq(0),
60     fResSP_vs_Cent_lq(0),
61     f2partCumQA_vs_Cent_lq(0),
62     f2partCumQB_vs_Cent_lq(0),
63     fResSP_sq(0),
64     f2dResSP_sq(0),
65     fResSP_vs_Cent_sq(0),
66     f2partCumQA_vs_Cent_sq(0),
67     f2partCumQB_vs_Cent_sq(0)
68       {}
69   AliAnalysisTaskV2AllChAOD(const char *name);
70   virtual ~AliAnalysisTaskV2AllChAOD() {
71     Printf("calling detructor of AliAnalysisTaskV2AllChAOD - To be implemented");
72   }
73   
74   void SetIsMC(Bool_t isMC = kFALSE)    {fIsMC = isMC; };
75   Bool_t GetIsMC()           const           { return fIsMC;};
76  
77   void SetCharge(Int_t charge = 0)    {fCharge = charge; };
78   Int_t GetCharge()           const           { return fCharge;};
79   
80   void SetVZEROside(Int_t side = 0)    {fVZEROside = side; };
81   Int_t GetVZEROside()           const           { return fVZEROside;};
82   
83   virtual void   UserCreateOutputObjects();
84   virtual void   UserExec(Option_t *option);
85   virtual void   Terminate(Option_t *);
86   
87   AliSpectraAODTrackCuts      * GetTrackCuts()         {  return fTrackCuts; }
88   AliSpectraAODEventCuts      * GetEventCuts()         {  return fEventCuts; }
89   TList                          * GetOutputList()         { return fOutput; }
90   
91   void SetTrackCuts(AliSpectraAODTrackCuts * tc)       { fTrackCuts = tc; }
92   void SetEventCuts(AliSpectraAODEventCuts * vc)       { fEventCuts = vc; }
93   void SetnCentBins(Int_t val)                             { fnCentBins = val; }
94   void SetnQvecBins(Int_t val)                             { fnQvecBins = val; }
95   void SetQvecCalibMode(Bool_t mode)                  { fIsQvecCalibMode = mode; }
96   void SetQvecUpperLimit(Double_t val)                { fQvecUpperLim = val; }
97   
98   void SetTrackBits(UInt_t TrackBits) {fTrkBit=TrackBits;}
99   void SetEtaCut(Double_t val) {fEtaCut=val;}
100   void SetMinPt(Double_t val) {fMinPt=val;}
101   void SetMaxPt(Double_t val) {fMaxPt=val;}
102   void SetMinTPCNcls(Double_t val) {fMinTPCNcls=val;}
103   
104   Bool_t GetDCA(const AliAODTrack* trk, Double_t * p);
105
106   void     SetEtaGap(Float_t etamin,Float_t etamax)   { fEtaGapMin = etamin; fEtaGapMax = etamax; }
107   void     SetQvecCut(Float_t qmin,Float_t qmax)      { fCutSmallQperc = qmin; fCutLargeQperc = qmax; }
108   void     SetFillTHn (Bool_t val) { fFillTHn = val; }
109   
110  private:
111   
112   AliAODEvent                   * fAOD;                         //! AOD object
113   AliSpectraAODTrackCuts      * fTrackCuts;                   // Track Cuts
114   AliSpectraAODEventCuts      * fEventCuts;                   // Event Cuts
115   Bool_t                          fIsMC;                         // true if processing MC
116   Int_t                            fCharge;                      // charge to be selected
117   Int_t                            fVZEROside;                  // 0: VZERO-A 1: VZERO-C
118   TList                          * fOutput;                     // output list
119   TList                          * fOutput_lq;                  // output list large Q
120   TList                          * fOutput_sq;                  // output list small Q
121   Int_t                            fnCentBins;                  // number of bins for the centrality axis
122   Int_t                            fnQvecBins;                 // number of bins for the q vector axis
123   Bool_t                           fIsQvecCalibMode;          //calib mode for Qvector percentile
124   Double_t                         fQvecUpperLim;             //Upper limit for Qvector
125   
126   Int_t                            fCutLargeQperc; // cut on 10% large Q-vec events
127   Int_t                            fCutSmallQperc; // cut on 10% small Q-vec events
128   
129   Double_t fEtaGapMin;
130   Double_t fEtaGapMax;
131   
132   UInt_t    fTrkBit;
133   Double_t  fEtaCut;
134   Double_t  fMinPt;
135   Double_t  fMaxPt;
136   Double_t  fMinTPCNcls;
137   
138   Bool_t fFillTHn;
139   
140   //output object
141   TProfile*     fResSP;             //! resolution
142   TH2D*         f2dResSP;             //! resolution
143   TH2D*         fResSP_vs_Cent;
144   TH2D*         f2partCumQA_vs_Cent;
145   TH2D*         f2partCumQB_vs_Cent;
146   TH2D*         fEta_vs_Phi_bef;        //! eta vs phi distribution before sub events cut 
147   TH2D*         fEta_vs_PhiA;            //! eta vs phi distribution after sub events cut 
148   TH2D*         fEta_vs_PhiB;            //! eta vs phi distribution after sub events cut 
149   TProfile*     fv2SPGap1A[9];         //! v2{2} eta gap 1 for all events
150   TProfile*     fv2SPGap1B[9];         //! v2{2} eta gap 1 for all events
151
152   TProfile*     fSinGap1Aq[9];      //! <sin> vs pT gap 1
153   TProfile*     fCosGap1Aq[9];      //! <cos> vs pT gap 1
154   TProfile*     fSinGap1Bq[9];      //! <sin> vs pT gap 1
155   TProfile*     fCosGap1Bq[9];      //! <cos> vs pT gap 1
156   
157   TProfile*     fSinGap1A[9];      //! <sin> vs pT gap 1
158   TProfile*     fCosGap1A[9];      //! <cos> vs pT gap 1
159   TProfile*     fSinGap1B[9];      //! <sin> vs pT gap 1
160   TProfile*     fCosGap1B[9];      //! <cos> vs pT gap 1
161
162   //large q
163   TProfile*     fResSP_lq;             //! resolution
164   TH2D*         f2dResSP_lq;             //! resolution
165   TH2D*         fResSP_vs_Cent_lq;
166   TH2D*         f2partCumQA_vs_Cent_lq;
167   TH2D*         f2partCumQB_vs_Cent_lq;
168   TProfile*     fv2SPGap1A_lq[9];         //! v2{2} eta gap 1 for all events
169   TProfile*     fv2SPGap1B_lq[9];         //! v2{2} eta gap 1 for all events
170   TProfile*     fSinGap1Aq_lq[9];      //! <sin> vs pT gap 1
171   TProfile*     fCosGap1Aq_lq[9];      //! <cos> vs pT gap 1
172   TProfile*     fSinGap1Bq_lq[9];      //! <sin> vs pT gap 1
173   TProfile*     fCosGap1Bq_lq[9];      //! <cos> vs pT gap 1
174   TProfile*     fSinGap1A_lq[9];      //! <sin> vs pT gap 1
175   TProfile*     fCosGap1A_lq[9];      //! <cos> vs pT gap 1
176   TProfile*     fSinGap1B_lq[9];      //! <sin> vs pT gap 1
177   TProfile*     fCosGap1B_lq[9];      //! <cos> vs pT gap 1
178   
179   //small q
180   TProfile*     fResSP_sq;             //! resolution
181   TH2D*         f2dResSP_sq;             //! resolution
182   TH2D*         fResSP_vs_Cent_sq;
183   TH2D*         f2partCumQA_vs_Cent_sq;
184   TH2D*         f2partCumQB_vs_Cent_sq;
185   TProfile*     fv2SPGap1A_sq[9];         //! v2{2} eta gap 1 for all events
186   TProfile*     fv2SPGap1B_sq[9];         //! v2{2} eta gap 1 for all events
187   TProfile*     fSinGap1Aq_sq[9];      //! <sin> vs pT gap 1
188   TProfile*     fCosGap1Aq_sq[9];      //! <cos> vs pT gap 1
189   TProfile*     fSinGap1Bq_sq[9];      //! <sin> vs pT gap 1
190   TProfile*     fCosGap1Bq_sq[9];      //! <cos> vs pT gap 1
191   TProfile*     fSinGap1A_sq[9];      //! <sin> vs pT gap 1
192   TProfile*     fCosGap1A_sq[9];      //! <cos> vs pT gap 1
193   TProfile*     fSinGap1B_sq[9];      //! <sin> vs pT gap 1
194   TProfile*     fCosGap1B_sq[9];      //! <cos> vs pT gap 1
195   
196   AliAnalysisTaskV2AllChAOD(const AliAnalysisTaskV2AllChAOD&);
197   AliAnalysisTaskV2AllChAOD& operator=(const AliAnalysisTaskV2AllChAOD&);
198   
199   ClassDef(AliAnalysisTaskV2AllChAOD, 6);
200 };
201
202 #endif