7095cc31f0b1c46f9fb0ecf05b54d760e28963d2
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliAnalysisTaskdPhi.h
1 ////////////////////////////////////////////////
2 //--------------------------------------------- 
3 // Class doing conversion gamma dPhi correlations
4 // Gamma Conversion analysis
5 //---------------------------------------------
6 ////////////////////////////////////////////////
7
8 #ifndef AliAnalysisTaskdPhi_cxx
9 #define AliAnalysisTaskdPhi_cxx
10
11 #include "AliAnalysisTaskSE.h"
12
13 #include <TAxis.h>
14 #include <TH3I.h>
15 #include <THnSparse.h>
16 #include <AliAnalysisFilter.h>
17 #include <iostream>
18 #include <AliAnaConvCorrBase.h>
19 #include <AliLog.h>
20 class AliAnaConvIsolation;
21 //class AliConversionPi0Filter;
22 class AliConversionCuts;
23 class TList;
24 class TH2I;
25 //class THnSparseF;
26
27 using namespace std;
28
29 class AliAnalysisTaskdPhi : public AliAnalysisTaskSE {
30
31 public:
32   AliAnalysisTaskdPhi(const char *name);
33   virtual ~AliAnalysisTaskdPhi();
34
35   virtual void   UserCreateOutputObjects();
36   virtual void   SetUpCorrObjects();
37   virtual void   UserExec(Option_t *option);
38   virtual void   Terminate(Option_t *);
39
40   AliAnalysisFilter& GetDielV0Filter()      { return fDielV0Filter;      }
41   AliAnalysisFilter& GetDielV0TrackFilter() { return fDielV0TrackFilter; }
42   AliAnalysisFilter& GetDielTrackFilter()   { return fDielTrackFilter;   }
43   AliAnalysisFilter& GetDielPi0Filter()     { return fDielPi0Filter;     }
44
45   TAxis& GetAxistPt()   { return fAxistPt;   }
46   TAxis& GetAxiscPt()   { return fAxiscPt;   }
47   TAxis& GetAxisEta()  { return fAxisEta;  }
48   TAxis& GetAxisPhi()  { return fAxisPhi;  }
49   TAxis& GetAxisZ()    { return fAxisZ;    }
50   TAxis& GetAxisCent() { return fAxisCent; }
51   TAxis& GetAxisPiMass() { return fAxisPiM; }
52
53   // void SetDielV0Filter(AliAnalysisFilter * filter) { fVDielV0Filter = filter; }
54   // void SetDielPi0Filter(AliAnalysisFilter * filter) { fDielPi0Filter = filter; }
55   // void SetDielV0TrackFilter(AliAnalysisFilter * filter) { fVDielV0TrackFilter = filter; }
56   // void SetDielTrackFilter(AliAnalysisFilter * filter) { fTDielrackFilter = filter; }
57
58   void SetV0Filter(AliConversionCuts * filter) { fV0Filter = filter; }
59   //void SetPi0Filter(AliConversionPi0Filter * filter) { fPionFilter = filter; }
60   
61   
62   //enum kAxes { kVertexZ, kCentrality, kEta, kPhi, kPt };
63   
64 protected:
65   
66   TClonesArray * GetConversionGammas(Bool_t isAOD);
67
68 private:
69   
70   THnSparseF * CreateSparse(TString nameString, TString titleString, TList * axesList);
71   Int_t GetBin(TAxis &axis, Double_t value);
72   THnSparseF * GetMEHistogram(Int_t binz, Int_t binc, TObjArray * array);
73   AliAnaConvCorrBase * GetCorrObject(Int_t binz, Int_t binc, TObjArray * array);
74   void Process(TObjArray * gammas, TObjArray * tracks, Int_t vertexBin, Int_t centBin);
75   void FindDeltaAODBranchName(AliVEvent * event);
76   
77   TList * fHistograms; //histograms
78   TList * fHistoGamma; //gamma histo
79   TList * fHistoPion; //pion histo
80
81   AliAnalysisFilter  fDielV0TrackFilter; //Track filter
82   AliAnalysisFilter  fDielV0Filter; //v0 filter
83   AliAnalysisFilter  fDielPi0Filter; //pion filter
84   AliAnalysisFilter  fDielTrackFilter; //track filter
85
86   AliConversionCuts * fV0Filter; //v0 filter
87   //AliConversionPi0Filter * fPionFilter;
88
89   TObjArray * fGammas; //gammas
90   TObjArray * fPions; //poins
91
92   TObjArray * hMETracks; //mixed event tracks
93   TObjArray * hMEPhotons; //photons
94   TObjArray * hMEPions; //pions
95   TH2I * hMEvents; //event histrogam
96
97   TObjArray * fPhotonCorr; //photon
98   TObjArray * fPionCorr; //poin
99   AliAnaConvIsolation * fIsoAna; //comment
100
101   Int_t fL1; //comment
102   Int_t fL2; //comment
103
104   TString fDeltaAODBranchName; //comment
105
106   TAxis fAxistPt; //comment
107   TAxis fAxiscPt; //comment
108   TAxis fAxisEta; //comment
109   TAxis fAxisPhi; //comment
110   TAxis fAxisCent; //comment
111   TAxis fAxisZ; //comment
112   TAxis fAxisPiM; //comment
113   
114   AliAnalysisTaskdPhi(const AliAnalysisTaskdPhi&); // not implemented
115   AliAnalysisTaskdPhi& operator=(const AliAnalysisTaskdPhi&); // not implemented
116   
117   ClassDef(AliAnalysisTaskdPhi, 2); // example of analysis
118 };
119
120 inline THnSparseF * AliAnalysisTaskdPhi::GetMEHistogram(Int_t binz, Int_t binc, TObjArray * array) {
121   ///Get Mixed Event histogram
122   if(binz < 0 || binz > fAxisZ.GetNbins()) {
123         cout << "error out of z axis range: " << binz << endl; 
124         return NULL;
125   }  
126   if(binc < 0 || binc >= fAxisCent.GetNbins()) {
127         cout << "error out of centraliy axis range: " << binc << endl; 
128         return NULL;
129   }  
130   
131   TObjArray * arrayc = static_cast<TObjArray*>(array->At(binz));
132   THnSparseF * histogram = static_cast<THnSparseF*>(arrayc->At(binc));
133   return histogram;
134 }
135
136
137 inline AliAnaConvCorrBase * AliAnalysisTaskdPhi::GetCorrObject(Int_t binz, Int_t binc, TObjArray * array) {
138   ///Get correlation object
139   if(binc < 0 || binz < 0) {
140           AliError("We have a bad bin!!!");
141           return NULL;
142         }
143
144   TObjArray * arrayc = static_cast<TObjArray*>(array->At(binz));
145   AliAnaConvCorrBase * corrmaker = static_cast<AliAnaConvCorrBase*>(arrayc->At(binc));
146   return corrmaker;
147
148 }
149
150 inline Int_t AliAnalysisTaskdPhi::GetBin(TAxis & axis, Double_t value) {
151   //Return bin - 1 if within range, else return -1
152   Int_t bin = axis.FindFixBin(value);
153   
154
155   bin = (bin > 0 && bin <= axis.GetNbins()) ? bin -1 : -1;
156   return bin;
157 }
158
159 #endif
160