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 #include <AliAnalysisCuts.h>
21 class AliAnaConvCorrPion;
22 class AliConversionCuts;
23 class AliConversionMesonCuts;
31 class AliAnalysisTaskdPhi : public AliAnalysisTaskSE {
34 AliAnalysisTaskdPhi(const char *name="slindal_dPhi");
35 virtual ~AliAnalysisTaskdPhi();
37 virtual void UserCreateOutputObjects();
38 virtual void SetUpCorrObjects();
39 virtual void SetUpCorrAxes(AliAnaConvCorrBase * corr);
40 virtual void UserExec(Option_t *option);
41 virtual void Terminate(Option_t *);
43 TAxis& GetAxistPt() { return fAxistPt; }
44 TAxis& GetAxiscPt() { return fAxiscPt; }
45 TAxis& GetAxisdEta() { return fAxisdEta; }
46 TAxis& GetAxisTrigEta() { return fAxisTrigEta; }
47 TAxis& GetAxisAssEta() { return fAxisAssEta; }
48 TAxis& GetAxisPhi() { return fAxisPhi; }
49 TAxis& GetAxisZ() { return fAxisZ; }
50 TAxis& GetAxisCent() { return fAxisCent; }
51 TAxis& GetAxisPiMass() { return fAxisPiM; }
53 void SetV0Filter(AliConversionCuts * filter) { fV0Filter = filter; }
55 void SetMesonFilter(AliConversionMesonCuts * filter) { fMesonFilter = filter; }
56 void SetPhotonFilter(AliConversionCuts * filter) { fPhotonFilter = filter; }
57 void SetV0Reader(AliV0ReaderV1 * reader) { fV0Reader = reader; }
58 void SaveReaderHists(Bool_t save = kTRUE) { fSaveReaderHists = save; }
59 AliAnalysisCuts * GetTrackCuts() const { return fTrackCuts; }
60 void SetTrackCuts( AliAnalysisCuts * cuts) { if (fTrackCuts) delete fTrackCuts; fTrackCuts = cuts; }
64 TClonesArray * GetConversionGammas(Bool_t isAOD);
68 THnSparseF * CreateSparse(TString nameString, TString titleString, TList * axesList);
69 Int_t GetBin(TAxis &axis, Double_t value);
70 THnSparseF * GetMEHistogram(Int_t binz, Int_t binc, TObjArray * array);
71 AliAnaConvCorrBase * GetCorrObject(Int_t binz, Int_t binc, TObjArray * array);
72 void Process(TObjArray * gammas, TObjArray * tracks, Float_t cent, Float_t vtxz);
73 void FindDeltaAODBranchName(AliVEvent * event);
75 TList * fHistograms; //histograms
77 AliV0ReaderV1 * fV0Reader; // V0 reader
78 Bool_t fSaveReaderHists; // save histograms from v0 reader
79 AliConversionCuts * fV0Filter; //additional v0 filter on top of v0 reader
80 AliConversionCuts * fPhotonFilter; //additional v0 filter for photons only
81 AliConversionMesonCuts * fMesonFilter; //additional meson filter behind fv0filter
82 AliAnalysisCuts * fTrackCuts; //Cuts for corr tracks
84 TH2I * hMEvents; //event histrogam
85 TH2I * hTrackCent; //event histrogam
87 AliAnaConvCorrBase * fPhotonCorr; //photon
88 AliAnaConvCorrPion * fPionCorr; //poin
90 TString fDeltaAODBranchName; //comment
92 TAxis fAxistPt; //comment
93 TAxis fAxiscPt; //comment
94 TAxis fAxisdEta; //comment
95 TAxis fAxisTrigEta; //comment
96 TAxis fAxisAssEta; //comment
97 TAxis fAxisPhi; //comment
98 TAxis fAxisCent; //comment
99 TAxis fAxisZ; //comment
100 TAxis fAxisPiM; //comment
102 Bool_t fDoPhoton; // do photon analysis?
104 AliAnalysisTaskdPhi(const AliAnalysisTaskdPhi&); // not implemented
105 AliAnalysisTaskdPhi& operator=(const AliAnalysisTaskdPhi&); // not implemented
107 ClassDef(AliAnalysisTaskdPhi, 6);
110 inline THnSparseF * AliAnalysisTaskdPhi::GetMEHistogram(Int_t binz, Int_t binc, TObjArray * array) {
111 ///Get Mixed Event histogram
112 if(binz < 0 || binz > fAxisZ.GetNbins()) {
113 cout << "error out of z axis range: " << binz << endl;
116 if(binc < 0 || binc >= fAxisCent.GetNbins()) {
117 cout << "error out of centraliy axis range: " << binc << endl;
121 TObjArray * arrayc = static_cast<TObjArray*>(array->At(binc));
122 THnSparseF * histogram = static_cast<THnSparseF*>(arrayc->At(binz));
127 inline AliAnaConvCorrBase * AliAnalysisTaskdPhi::GetCorrObject(Int_t binz, Int_t binc, TObjArray * array) {
128 ///Get correlation object
129 if(binc < 0 || binz < 0) {
130 AliError("We have a bad bin!!!");
134 TObjArray * arrayc = static_cast<TObjArray*>(array->At(binc));
135 AliAnaConvCorrBase * corrmaker = static_cast<AliAnaConvCorrBase*>(arrayc->At(binz));
139 inline Int_t AliAnalysisTaskdPhi::GetBin(TAxis & axis, Double_t value) {
140 //Return bin - 1 if within range, else return -1
141 Int_t bin = axis.FindFixBin(value);
144 bin = (bin > 0 && bin <= axis.GetNbins()) ? bin -1 : -1;