#ifndef AliAnalysisTaskdPhi_cxx
#define AliAnalysisTaskdPhi_cxx
#include "AliAnalysisTaskSE.h"
#include <TAxis.h>
#include <TH3I.h>
#include <THnSparse.h>
#include <THn.h>
#include <iostream>
#include <AliLog.h>
#include <AliAnalysisCuts.h>
class AliConvEventCuts;
class AliConversionPhotonCuts;
class AliConversionMesonCuts;
class AliV0ReaderV1;
class TList;
class TH2I;
using namespace std;
class AliAnalysisTaskdPhi : public AliAnalysisTaskSE {
public:
AliAnalysisTaskdPhi(const char *name="slindal_dPhi");
virtual ~AliAnalysisTaskdPhi();
virtual void UserCreateOutputObjects();
virtual void SetUpBins();
virtual void UserExec(Option_t *option);
virtual void Terminate(Option_t *);
TAxis& GetAxistPt() { return fAxistPt; }
TAxis& GetAxiscPt() { return fAxiscPt; }
TAxis& GetAxisdEta() { return fAxisdEta; }
TAxis& GetAxisTrigEta() { return fAxisTrigEta; }
TAxis& GetAxisAssEta() { return fAxisAssEta; }
TAxis& GetAxisPhi() { return fAxisdPhi; }
TAxis& GetAxisZ() { return fAxisZ; }
TAxis& GetAxisCent() { return fAxisCent; }
TAxis& GetAxisPiMass() { return fAxisPiM; }
void SetV0Filter(AliConvEventCuts * filterEvent, AliConversionPhotonCuts * filter) { fV0FilterEvent=filterEvent, fV0FilterPhoton = filter; }
void AddEventFilter(TObject * filter, Bool_t high = kTRUE) { fEventFilters[high].AddLast(filter); }
void AddV0Filter(TObject * filter, Bool_t high = kTRUE) { fV0Filters[high].AddLast(filter); }
void AddMesonFilter(TObject * filter, Bool_t high = kTRUE) { fMesonFilters[high].AddLast(filter); }
void AddTrackFilter(TObject * filter, Bool_t high = kTRUE) { fTrackFilters[high].AddLast(filter); }
void SetCorrectionMap(THnF * map) { fCorrectionMap = map; }
void SetEventFilter(AliConvEventCuts * filter) { fEventFilter = filter; }
void SetMesonFilter(AliConversionMesonCuts * filter) { fMesonFilter = filter; }
void SetPhotonFilter(AliConversionPhotonCuts * filter) { fPhotonFilter = filter; }
void SetV0Reader(AliV0ReaderV1 * reader) { fV0Reader = reader; }
void SaveReaderHists(Bool_t save = kTRUE) { fSaveReaderHists = save; }
AliAnalysisCuts * GetTrackCuts() const { return fTrackFilter; }
void SetTrackFilter( AliAnalysisCuts * cuts) { if (fTrackFilter) delete fTrackFilter; fTrackFilter = cuts; }
protected:
TClonesArray * GetConversionGammas(Bool_t isAOD);
private:
Double_t GetTrackCorrection(Double_t vtxz, AliVTrack * track);
Float_t GetDPhi(Float_t dPhi) {
if ( dPhi < 3*TMath::PiOver2() && dPhi > - TMath::PiOver2() ) return dPhi;
else return ( (dPhi>0)? dPhi - TMath::TwoPi() : dPhi + TMath::TwoPi() );
}
THnSparseF * CreateSparse(TString nameString, TString titleString, TList * axesList);
Int_t GetBin(TAxis &axis, Double_t value);
THnSparseF * GetMEHistogram(Int_t binz, Int_t binc, TObjArray * array);
void Process(TObjArray * gammas, TObjArray * tracks, Float_t cent, Float_t vtxz);
void FindDeltaAODBranchName(AliVEvent * event);
TList *fHistograms;
THnSparseF *fCorrSparse;
THnSparseF *fTrigSparse;
THnSparseF *fTrackSparse;
THnSparseF *fMassSparse;
AliV0ReaderV1 *fV0Reader;
Bool_t fSaveReaderHists;
AliConvEventCuts *fV0FilterEvent;
AliConversionPhotonCuts *fV0FilterPhoton;
TObjArray fV0Filters[2];
TObjArray fEventFilters[2];
AliConvEventCuts *fEventFilter;
AliConversionPhotonCuts *fPhotonFilter;
AliConversionMesonCuts *fMesonFilter;
TObjArray fMesonFilters[2];
AliAnalysisCuts *fTrackFilter;
TObjArray fTrackFilters[2];
TObjArray fGammas;
TObjArray fTracks;
TH2I *hMEvents;
TH2I *hTrackCent;
TH3F *hTrigPt;
TH2F *hTrackPt;
TH1F *hTrigPhi;
TString fDeltaAODBranchName;
TAxis fAxistPt;
TAxis fAxiscPt;
TAxis fAxisdEta;
TAxis fAxisTrigEta;
TAxis fAxisAssEta;
TAxis fAxisdPhi;
TAxis fAxisCent;
TAxis fAxisZ;
TAxis fAxisPiM;
TAxis fAxisTrackFilters;
TAxis fAxisV0Filters;
TAxis fAxisMesonFilters;
Bool_t fkTrackAxis;
Bool_t fkV0Axis;
Bool_t fkPionAxis;
TList fAxesList;
TList fTrigAxesList;
TList fTrackAxesList;
TList fMassAxesList;
Bool_t fDoPhoton;
THnF * fCorrectionMap;
AliAnalysisTaskdPhi(const AliAnalysisTaskdPhi&);
AliAnalysisTaskdPhi& operator=(const AliAnalysisTaskdPhi&);
ClassDef(AliAnalysisTaskdPhi, 11);
};
inline THnSparseF * AliAnalysisTaskdPhi::GetMEHistogram(Int_t binz, Int_t binc, TObjArray * array) {
if(binz < 0 || binz > fAxisZ.GetNbins()) {
cout << "error out of z axis range: " << binz << endl;
return NULL;
}
if(binc < 0 || binc >= fAxisCent.GetNbins()) {
cout << "error out of centraliy axis range: " << binc << endl;
return NULL;
}
TObjArray * arrayc = static_cast<TObjArray*>(array->At(binc));
THnSparseF * histogram = static_cast<THnSparseF*>(arrayc->At(binz));
return histogram;
}
inline Int_t AliAnalysisTaskdPhi::GetBin(TAxis & axis, Double_t value) {
Int_t bin = axis.FindFixBin(value);
bin = (bin > 0 && bin <= axis.GetNbins()) ? bin -1 : -1;
return bin;
}
#endif
AliAnalysisTaskdPhi.h:100 AliAnalysisTaskdPhi.h:101 AliAnalysisTaskdPhi.h:102 AliAnalysisTaskdPhi.h:103 AliAnalysisTaskdPhi.h:104 AliAnalysisTaskdPhi.h:105 AliAnalysisTaskdPhi.h:106 AliAnalysisTaskdPhi.h:107 AliAnalysisTaskdPhi.h:108 AliAnalysisTaskdPhi.h:109 AliAnalysisTaskdPhi.h:110 AliAnalysisTaskdPhi.h:111 AliAnalysisTaskdPhi.h:112 AliAnalysisTaskdPhi.h:113 AliAnalysisTaskdPhi.h:114 AliAnalysisTaskdPhi.h:115 AliAnalysisTaskdPhi.h:116 AliAnalysisTaskdPhi.h:117 AliAnalysisTaskdPhi.h:118 AliAnalysisTaskdPhi.h:119 AliAnalysisTaskdPhi.h:120 AliAnalysisTaskdPhi.h:121 AliAnalysisTaskdPhi.h:122 AliAnalysisTaskdPhi.h:123 AliAnalysisTaskdPhi.h:124 AliAnalysisTaskdPhi.h:125 AliAnalysisTaskdPhi.h:126 AliAnalysisTaskdPhi.h:127 AliAnalysisTaskdPhi.h:128 AliAnalysisTaskdPhi.h:129 AliAnalysisTaskdPhi.h:130 AliAnalysisTaskdPhi.h:131 AliAnalysisTaskdPhi.h:132 AliAnalysisTaskdPhi.h:133 AliAnalysisTaskdPhi.h:134 AliAnalysisTaskdPhi.h:135 AliAnalysisTaskdPhi.h:136 AliAnalysisTaskdPhi.h:137 AliAnalysisTaskdPhi.h:138 AliAnalysisTaskdPhi.h:139 AliAnalysisTaskdPhi.h:140 AliAnalysisTaskdPhi.h:141 AliAnalysisTaskdPhi.h:142 AliAnalysisTaskdPhi.h:143 AliAnalysisTaskdPhi.h:144 AliAnalysisTaskdPhi.h:145 AliAnalysisTaskdPhi.h:146 AliAnalysisTaskdPhi.h:147 AliAnalysisTaskdPhi.h:148 AliAnalysisTaskdPhi.h:149 AliAnalysisTaskdPhi.h:150 AliAnalysisTaskdPhi.h:151 AliAnalysisTaskdPhi.h:152 AliAnalysisTaskdPhi.h:153 AliAnalysisTaskdPhi.h:154 AliAnalysisTaskdPhi.h:155 AliAnalysisTaskdPhi.h:156 AliAnalysisTaskdPhi.h:157 AliAnalysisTaskdPhi.h:158 AliAnalysisTaskdPhi.h:159 AliAnalysisTaskdPhi.h:160 AliAnalysisTaskdPhi.h:161 AliAnalysisTaskdPhi.h:162 AliAnalysisTaskdPhi.h:163 AliAnalysisTaskdPhi.h:164 AliAnalysisTaskdPhi.h:165 AliAnalysisTaskdPhi.h:166 AliAnalysisTaskdPhi.h:167 AliAnalysisTaskdPhi.h:168 AliAnalysisTaskdPhi.h:169 AliAnalysisTaskdPhi.h:170 AliAnalysisTaskdPhi.h:171 AliAnalysisTaskdPhi.h:172 AliAnalysisTaskdPhi.h:173 AliAnalysisTaskdPhi.h:174 AliAnalysisTaskdPhi.h:175 AliAnalysisTaskdPhi.h:176 AliAnalysisTaskdPhi.h:177 AliAnalysisTaskdPhi.h:178 AliAnalysisTaskdPhi.h:179 AliAnalysisTaskdPhi.h:180 AliAnalysisTaskdPhi.h:181 AliAnalysisTaskdPhi.h:182 AliAnalysisTaskdPhi.h:183 AliAnalysisTaskdPhi.h:184 AliAnalysisTaskdPhi.h:185 AliAnalysisTaskdPhi.h:186 AliAnalysisTaskdPhi.h:187 AliAnalysisTaskdPhi.h:188 AliAnalysisTaskdPhi.h:189 AliAnalysisTaskdPhi.h:190 AliAnalysisTaskdPhi.h:191 AliAnalysisTaskdPhi.h:192 AliAnalysisTaskdPhi.h:193 AliAnalysisTaskdPhi.h:194 AliAnalysisTaskdPhi.h:195 AliAnalysisTaskdPhi.h:196 AliAnalysisTaskdPhi.h:197 AliAnalysisTaskdPhi.h:198 AliAnalysisTaskdPhi.h:199 AliAnalysisTaskdPhi.h:200 AliAnalysisTaskdPhi.h:201