1 ////////////////////////////////////////////////
2 //---------------------------------------------
3 // Class doing conversion gamma dPhi correlations
4 // Gamma Conversion analysis
5 //---------------------------------------------
6 ////////////////////////////////////////////////
8 #ifndef AliAnalysisTaskdPhi_cxx
9 #define AliAnalysisTaskdPhi_cxx
11 #include "AliAnalysisTaskSE.h"
15 #include <THnSparse.h>
16 #include <AliAnalysisFilter.h>
18 #include <AliAnaConvCorrBase.h>
20 class AliAnaConvIsolation;
21 //class AliConversionPi0Filter;
22 class AliConversionCuts;
29 class AliAnalysisTaskdPhi : public AliAnalysisTaskSE {
32 AliAnalysisTaskdPhi(const char *name);
33 virtual ~AliAnalysisTaskdPhi();
35 virtual void UserCreateOutputObjects();
36 virtual void SetUpCorrObjects();
37 virtual void UserExec(Option_t *option);
38 virtual void Terminate(Option_t *);
40 AliAnalysisFilter& GetDielV0Filter() { return fDielV0Filter; }
41 AliAnalysisFilter& GetDielV0TrackFilter() { return fDielV0TrackFilter; }
42 AliAnalysisFilter& GetDielTrackFilter() { return fDielTrackFilter; }
43 AliAnalysisFilter& GetDielPi0Filter() { return fDielPi0Filter; }
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; }
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; }
58 void SetV0Filter(AliConversionCuts * filter) { fV0Filter = filter; }
59 //void SetPi0Filter(AliConversionPi0Filter * filter) { fPionFilter = filter; }
62 //enum kAxes { kVertexZ, kCentrality, kEta, kPhi, kPt };
66 TClonesArray * GetConversionGammas(Bool_t isAOD);
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);
77 TList * fHistograms; //histograms
78 TList * fHistoGamma; //gamma histo
79 TList * fHistoPion; //pion histo
81 AliAnalysisFilter fDielV0TrackFilter; //Track filter
82 AliAnalysisFilter fDielV0Filter; //v0 filter
83 AliAnalysisFilter fDielPi0Filter; //pion filter
84 AliAnalysisFilter fDielTrackFilter; //track filter
86 AliConversionCuts * fV0Filter; //v0 filter
87 //AliConversionPi0Filter * fPionFilter;
89 TObjArray * fGammas; //gammas
90 TObjArray * fPions; //poins
92 TObjArray * hMETracks; //mixed event tracks
93 TObjArray * hMEPhotons; //photons
94 TObjArray * hMEPions; //pions
95 TH2I * hMEvents; //event histrogam
97 TObjArray * fPhotonCorr; //photon
98 TObjArray * fPionCorr; //poin
99 AliAnaConvIsolation * fIsoAna; //comment
104 TString fDeltaAODBranchName; //comment
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
114 AliAnalysisTaskdPhi(const AliAnalysisTaskdPhi&); // not implemented
115 AliAnalysisTaskdPhi& operator=(const AliAnalysisTaskdPhi&); // not implemented
117 ClassDef(AliAnalysisTaskdPhi, 2); // example of analysis
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;
126 if(binc < 0 || binc >= fAxisCent.GetNbins()) {
127 cout << "error out of centraliy axis range: " << binc << endl;
131 TObjArray * arrayc = static_cast<TObjArray*>(array->At(binz));
132 THnSparseF * histogram = static_cast<THnSparseF*>(arrayc->At(binc));
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!!!");
144 TObjArray * arrayc = static_cast<TObjArray*>(array->At(binz));
145 AliAnaConvCorrBase * corrmaker = static_cast<AliAnaConvCorrBase*>(arrayc->At(binc));
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);
155 bin = (bin > 0 && bin <= axis.GetNbins()) ? bin -1 : -1;