#ifndef AliAnalysisTaskPi0v2_cxx
#define AliAnalysisTaskPi0v2_cxx
#include "AliAnalysisTaskSE.h"
#include "TH1.h"
#include "TH2.h"
#include "TH3.h"
#include "THnSparse.h"
#include "AliLog.h"
#include "AliConversionSelection.h"
#include "AliConvEventCuts.h"
#include "AliConversionMesonCuts.h"
#include "AliV0ReaderV1.h"
#include "AliEventplane.h"
#include "TVector2.h"
#include "TProfile.h"
using namespace std;
class AliAnalysisTaskPi0v2 : public AliAnalysisTaskSE{
public:
enum EEventPlaneMethod{
kTPC=0,
kTPCEtaGap=1,
kV0A=2,
kV0C=3,
knEPMethod=4
};
enum EEventPlane{
kEPTPC=0,
kEPTPCEtaA,
kEPTPCEtaC,
kEPV0A,
kEPV0C,
knEP
};
enum EPDGCode{
kPi0=111,
kEta=221
};
static const Int_t knBinsPhi=6;
static const Int_t knCentMax=10;
static const Int_t knFlatPeriod=2;
AliAnalysisTaskPi0v2(const char *name="pi0v2",Int_t harmonic=2);
virtual ~AliAnalysisTaskPi0v2();
virtual void UserCreateOutputObjects();
virtual void UserExec(Option_t *option);
virtual void Terminate(Option_t *);
void SetCentralityBins(Double_t *bins,Int_t nbins);
void SetMeson(EPDGCode meson){fMesonPDGCode=meson;}
void SetNBinsPhi(Int_t nbins){fNBinsPhi=nbins;}
void SetV0Reader(AliV0ReaderV1 *v0Reader){fV0Reader=v0Reader;}
void SetInvMassRange(Double_t range[2]){fInvMassRange[0]=range[0];fInvMassRange[1]=range[1];};
void SetEtaGap(Double_t gapsize){fEtaGap=gapsize;};
void SetCuts(AliConversionSelection **conversionselection,Int_t numberOfCuts);
void SetFillQA(Bool_t fill){fFillQA=fill;}
void SetEPSelectionMask(Int_t mask[knEPMethod]){for(Int_t ii=0;ii<knEPMethod;ii++)fEPSelectionMask[ii]=mask[ii];};
void SetFlatteningCoeff(EEventPlane ep,Int_t period,Int_t nCent,Double_t *cc2,Double_t *cs2,Double_t *cc4,Double_t *cs4);
Int_t GetPeriodIndex(TString period);
Int_t GetHarmonic(){return fHarmonic;};
private:
AliAnalysisTaskPi0v2(const AliAnalysisTaskPi0v2&);
AliAnalysisTaskPi0v2& operator=(const AliAnalysisTaskPi0v2&);
Bool_t InitEvent();
void ProcessGammas(Int_t iCut,EEventPlaneMethod iEP);
void ProcessPi0s(Int_t iCut,EEventPlaneMethod iEP);
void ProcessQA();
Double_t GetPhiwrtRP(Double_t dPhi);
Double_t GetPhotonPhiwrtRP(AliAODConversionPhoton *gamma,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
Double_t GetPi0PhiwrtRP(AliAODConversionMother *pi0,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
Double_t GetChargedPhiwrtRP(AliVTrack *charged,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
void GetPhotondNdPhi(Int_t *dNdPhi,Int_t iEP,Int_t iCut=0);
void GetChargeddNdPhi(Int_t *dNdPhi,Int_t &ntot,Int_t iEP);
Int_t GetPhiBin(Double_t phiwrt);
Int_t GetPhotonPhiBin(AliAODConversionPhoton *gamma,Int_t iEP);
Double_t GetMCPhotonPhiwrtRP(TParticle *gamma,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
TVector2 GetEPContribution(AliAODConversionPhoton *gamma);
Double_t GetEventPlaneAngle(EEventPlaneMethod EPmethod,Double_t eta=0,AliAODConversionPhoton *gamma0=NULL,AliAODConversionPhoton *gamma1=NULL,Bool_t bDoFlattening=kTRUE);
Double_t GetTPCSubEPEta(EEventPlane ep);
Double_t GetCorrectedTPCEPAngle(AliAODConversionPhoton *gamma0=NULL,AliAODConversionPhoton *gamma1=NULL,Bool_t bDoFlattening=kTRUE);
Bool_t SetCentrality();
void ProcessEventPlane();
Int_t GetRadialBin(Double_t radius);
Int_t GetRunIndex(Int_t run);
Double_t ApplyFlattening(Double_t phi,EEventPlane ep);
Bool_t GetTPCEventPlane();
void GetV0EP(AliVEvent * event,Double_t &rpv0a,Double_t &rpv0c);
void LoadVZEROCalibration(Int_t run);
void LoadTPCCalibration(Int_t run);
Double_t GetWeight(TObject* track1);
Double_t GetPhiWeight(TObject* track1);
TH1F* SelectPhiDist(AliVTrack *track);
Double_t GetPsiInRange(Double_t phi);
TObjArray* GetEventPlaneTracks(Int_t &maxID);
TVector2 GetContributionEP(AliVTrack *track);
Int_t GetAODEPTrackFilterBit();
enum Ebinsgamma{
kGammaPt=0,
kGammadPhi,
kGammaCent,
kGammaEPM,
knbinsGamma
};
enum Ebinspi0{
kPi0Pt=0,
kPi0Mass,
kPi0dPhi,
kPi0Cent,
kPi0EPM,
knbinsPi0
};
enum EEventSelection{
kEventIn=1,
kEventSelV0Reader,
kEventCentrality,
kEventRun,
kEventNoTPCEP,
kEventProcessEvent,
kEventSelected
};
static const Int_t knbinsGammaMult=3;
static const Int_t kGCnYBinsSpectra = 80;
static const Double_t kGCfirstYBinSpectra;
static const Double_t kGClastYBinSpectra;
AliV0ReaderV1 *fV0Reader;
Int_t fNCuts;
AliConversionSelection **fConversionSelection;
TClonesArray *fConversionGammas;
Int_t fNCentralityBins;
Double_t fCentralityBins[knCentMax];
Float_t fCentrality;
Int_t fCentralityBin;
Int_t fNBinsPhi;
AliEventplane *fEP;
Bool_t fUseTPCOnlyTracks;
Double_t fEtaMax;
Double_t fEtaGap;
Double_t fRPTPCEtaA;
Double_t fRPTPCEtaC;
Double_t fRPV0A;
Double_t fRPV0C;
Double_t fRPTPC;
Double_t fRPTPCEtaABF;
Double_t fRPTPCEtaCBF;
Double_t fRPV0ABF;
Double_t fRPV0CBF;
Double_t fRPTPCBF;
AliConvEventCuts *fEventCuts;
AliConversionPhotonCuts *fConversionCuts;
TRandom3 *fRandomizer;
TList *fOutputList;
EPDGCode fMesonPDGCode;
Double_t fInvMassRange[2];
Double_t fDeltaPsiRP;
Int_t fRunNumber;
Int_t fRunIndex;
Int_t fNEPMethods;
Bool_t fFillQA;
Int_t fHarmonic;
Double_t fPsiMax;
TString fPeriod;
Bool_t fIsAOD;
TH1F *fPhiDist[4];
THnSparse *fSparseDist;
TH1F *fHruns;
Bool_t fDoEPFlattening;
Int_t fEPSelectionMask[knEPMethod];
Double_t fFlatc2[knFlatPeriod][knEP][knCentMax];
Double_t fFlats2[knFlatPeriod][knEP][knCentMax];
Double_t fFlatc4[knFlatPeriod][knEP][knCentMax];
Double_t fFlats4[knFlatPeriod][knEP][knCentMax];
Int_t fPeriodIndex;
TH1F *hNEvents;
TH1F *hEventSelection;
TH2F *hRPTPC;
TH2F *hRPV0A;
TH2F *hRPV0C;
TH2F *hRPTPCAC;
TH2F *hRPV0ATPC;
TH2F *hRPV0CTPC;
TH2F *hRPV0AC;
TH2F *hCos2TPC;
TH2F *hCos2V0ATPC;
TH2F *hCos2V0CTPC;
TH2F *hCos2V0AC;
TH2F *hRPTPCEtaA;
TH2F *hRPTPCEtaC;
TH2F *hRPTPCEtaAC;
TH2F *hCos2TPCEta;
TH2F *hCos2V0ATPCEtaA;
TH2F *hCos2V0ATPCEtaC;
TH2F *hCos2V0CTPCEtaA;
TH2F *hCos2V0CTPCEtaC;
TH2F *hCos2SumWeights;
TH2F *hEtaTPCEP;
TH2F *hGammaMultCent;
TH2F **hGammaPhi;
TH2F *hMultChargedvsNGamma;
TH2F *hMultChargedvsVZERO;
TH2F *hMultChargedvsSPD;
THnSparseF *hGammadNdPhi;
THnSparseF *hGammaMultdPhiTRUE;
THnSparseF *hGammaMultdPhiRECOTRUE;
THnSparseF *hGammaMultTRUE;
THnSparseF *hGammaMultRECOTRUE;
THnSparseF **hGammaMultdPhi;
THnSparseF **hGammaMult;
THnSparseF **hGamma;
THnSparseF *hGammaFull;
THnSparseF *hCharged;
THnSparseF **hPi0;
THnSparseF **hPi0BG;
static const Int_t nCentrBinV0 = 9;
TProfile *fMultV0;
Float_t fV0Cpol,fV0Apol;
Float_t fMeanQ[nCentrBinV0][2][2];
Float_t fWidthQ[nCentrBinV0][2][2];
THnSparse *hEPQA;
ClassDef(AliAnalysisTaskPi0v2, 7);
};
#endif
AliAnalysisTaskPi0v2.h:10 AliAnalysisTaskPi0v2.h:11 AliAnalysisTaskPi0v2.h:12 AliAnalysisTaskPi0v2.h:13 AliAnalysisTaskPi0v2.h:14 AliAnalysisTaskPi0v2.h:15 AliAnalysisTaskPi0v2.h:16 AliAnalysisTaskPi0v2.h:17 AliAnalysisTaskPi0v2.h:18 AliAnalysisTaskPi0v2.h:19 AliAnalysisTaskPi0v2.h:20 AliAnalysisTaskPi0v2.h:21 AliAnalysisTaskPi0v2.h:22 AliAnalysisTaskPi0v2.h:23 AliAnalysisTaskPi0v2.h:24 AliAnalysisTaskPi0v2.h:25 AliAnalysisTaskPi0v2.h:26 AliAnalysisTaskPi0v2.h:27 AliAnalysisTaskPi0v2.h:28 AliAnalysisTaskPi0v2.h:29 AliAnalysisTaskPi0v2.h:30 AliAnalysisTaskPi0v2.h:31 AliAnalysisTaskPi0v2.h:32 AliAnalysisTaskPi0v2.h:33 AliAnalysisTaskPi0v2.h:34 AliAnalysisTaskPi0v2.h:35 AliAnalysisTaskPi0v2.h:36 AliAnalysisTaskPi0v2.h:37 AliAnalysisTaskPi0v2.h:38 AliAnalysisTaskPi0v2.h:39 AliAnalysisTaskPi0v2.h:40 AliAnalysisTaskPi0v2.h:41 AliAnalysisTaskPi0v2.h:42 AliAnalysisTaskPi0v2.h:43 AliAnalysisTaskPi0v2.h:44 AliAnalysisTaskPi0v2.h:45 AliAnalysisTaskPi0v2.h:46 AliAnalysisTaskPi0v2.h:47 AliAnalysisTaskPi0v2.h:48 AliAnalysisTaskPi0v2.h:49 AliAnalysisTaskPi0v2.h:50 AliAnalysisTaskPi0v2.h:51 AliAnalysisTaskPi0v2.h:52 AliAnalysisTaskPi0v2.h:53 AliAnalysisTaskPi0v2.h:54 AliAnalysisTaskPi0v2.h:55 AliAnalysisTaskPi0v2.h:56 AliAnalysisTaskPi0v2.h:57 AliAnalysisTaskPi0v2.h:58 AliAnalysisTaskPi0v2.h:59 AliAnalysisTaskPi0v2.h:60 AliAnalysisTaskPi0v2.h:61 AliAnalysisTaskPi0v2.h:62 AliAnalysisTaskPi0v2.h:63 AliAnalysisTaskPi0v2.h:64 AliAnalysisTaskPi0v2.h:65 AliAnalysisTaskPi0v2.h:66 AliAnalysisTaskPi0v2.h:67 AliAnalysisTaskPi0v2.h:68 AliAnalysisTaskPi0v2.h:69 AliAnalysisTaskPi0v2.h:70 AliAnalysisTaskPi0v2.h:71 AliAnalysisTaskPi0v2.h:72 AliAnalysisTaskPi0v2.h:73 AliAnalysisTaskPi0v2.h:74 AliAnalysisTaskPi0v2.h:75 AliAnalysisTaskPi0v2.h:76 AliAnalysisTaskPi0v2.h:77 AliAnalysisTaskPi0v2.h:78 AliAnalysisTaskPi0v2.h:79 AliAnalysisTaskPi0v2.h:80 AliAnalysisTaskPi0v2.h:81 AliAnalysisTaskPi0v2.h:82 AliAnalysisTaskPi0v2.h:83 AliAnalysisTaskPi0v2.h:84 AliAnalysisTaskPi0v2.h:85 AliAnalysisTaskPi0v2.h:86 AliAnalysisTaskPi0v2.h:87 AliAnalysisTaskPi0v2.h:88 AliAnalysisTaskPi0v2.h:89 AliAnalysisTaskPi0v2.h:90 AliAnalysisTaskPi0v2.h:91 AliAnalysisTaskPi0v2.h:92 AliAnalysisTaskPi0v2.h:93 AliAnalysisTaskPi0v2.h:94 AliAnalysisTaskPi0v2.h:95 AliAnalysisTaskPi0v2.h:96 AliAnalysisTaskPi0v2.h:97 AliAnalysisTaskPi0v2.h:98 AliAnalysisTaskPi0v2.h:99 AliAnalysisTaskPi0v2.h:100 AliAnalysisTaskPi0v2.h:101 AliAnalysisTaskPi0v2.h:102 AliAnalysisTaskPi0v2.h:103 AliAnalysisTaskPi0v2.h:104 AliAnalysisTaskPi0v2.h:105 AliAnalysisTaskPi0v2.h:106 AliAnalysisTaskPi0v2.h:107 AliAnalysisTaskPi0v2.h:108 AliAnalysisTaskPi0v2.h:109 AliAnalysisTaskPi0v2.h:110 AliAnalysisTaskPi0v2.h:111 AliAnalysisTaskPi0v2.h:112 AliAnalysisTaskPi0v2.h:113 AliAnalysisTaskPi0v2.h:114 AliAnalysisTaskPi0v2.h:115 AliAnalysisTaskPi0v2.h:116 AliAnalysisTaskPi0v2.h:117 AliAnalysisTaskPi0v2.h:118 AliAnalysisTaskPi0v2.h:119 AliAnalysisTaskPi0v2.h:120 AliAnalysisTaskPi0v2.h:121 AliAnalysisTaskPi0v2.h:122 AliAnalysisTaskPi0v2.h:123 AliAnalysisTaskPi0v2.h:124 AliAnalysisTaskPi0v2.h:125 AliAnalysisTaskPi0v2.h:126 AliAnalysisTaskPi0v2.h:127 AliAnalysisTaskPi0v2.h:128 AliAnalysisTaskPi0v2.h:129 AliAnalysisTaskPi0v2.h:130 AliAnalysisTaskPi0v2.h:131 AliAnalysisTaskPi0v2.h:132 AliAnalysisTaskPi0v2.h:133 AliAnalysisTaskPi0v2.h:134 AliAnalysisTaskPi0v2.h:135 AliAnalysisTaskPi0v2.h:136 AliAnalysisTaskPi0v2.h:137 AliAnalysisTaskPi0v2.h:138 AliAnalysisTaskPi0v2.h:139 AliAnalysisTaskPi0v2.h:140 AliAnalysisTaskPi0v2.h:141 AliAnalysisTaskPi0v2.h:142 AliAnalysisTaskPi0v2.h:143 AliAnalysisTaskPi0v2.h:144 AliAnalysisTaskPi0v2.h:145 AliAnalysisTaskPi0v2.h:146 AliAnalysisTaskPi0v2.h:147 AliAnalysisTaskPi0v2.h:148 AliAnalysisTaskPi0v2.h:149 AliAnalysisTaskPi0v2.h:150 AliAnalysisTaskPi0v2.h:151 AliAnalysisTaskPi0v2.h:152 AliAnalysisTaskPi0v2.h:153 AliAnalysisTaskPi0v2.h:154 AliAnalysisTaskPi0v2.h:155 AliAnalysisTaskPi0v2.h:156 AliAnalysisTaskPi0v2.h:157 AliAnalysisTaskPi0v2.h:158 AliAnalysisTaskPi0v2.h:159 AliAnalysisTaskPi0v2.h:160 AliAnalysisTaskPi0v2.h:161 AliAnalysisTaskPi0v2.h:162 AliAnalysisTaskPi0v2.h:163 AliAnalysisTaskPi0v2.h:164 AliAnalysisTaskPi0v2.h:165 AliAnalysisTaskPi0v2.h:166 AliAnalysisTaskPi0v2.h:167 AliAnalysisTaskPi0v2.h:168 AliAnalysisTaskPi0v2.h:169 AliAnalysisTaskPi0v2.h:170 AliAnalysisTaskPi0v2.h:171 AliAnalysisTaskPi0v2.h:172 AliAnalysisTaskPi0v2.h:173 AliAnalysisTaskPi0v2.h:174 AliAnalysisTaskPi0v2.h:175 AliAnalysisTaskPi0v2.h:176 AliAnalysisTaskPi0v2.h:177 AliAnalysisTaskPi0v2.h:178 AliAnalysisTaskPi0v2.h:179 AliAnalysisTaskPi0v2.h:180 AliAnalysisTaskPi0v2.h:181 AliAnalysisTaskPi0v2.h:182 AliAnalysisTaskPi0v2.h:183 AliAnalysisTaskPi0v2.h:184 AliAnalysisTaskPi0v2.h:185 AliAnalysisTaskPi0v2.h:186 AliAnalysisTaskPi0v2.h:187 AliAnalysisTaskPi0v2.h:188 AliAnalysisTaskPi0v2.h:189 AliAnalysisTaskPi0v2.h:190 AliAnalysisTaskPi0v2.h:191 AliAnalysisTaskPi0v2.h:192 AliAnalysisTaskPi0v2.h:193 AliAnalysisTaskPi0v2.h:194 AliAnalysisTaskPi0v2.h:195 AliAnalysisTaskPi0v2.h:196 AliAnalysisTaskPi0v2.h:197 AliAnalysisTaskPi0v2.h:198 AliAnalysisTaskPi0v2.h:199 AliAnalysisTaskPi0v2.h:200 AliAnalysisTaskPi0v2.h:201 AliAnalysisTaskPi0v2.h:202 AliAnalysisTaskPi0v2.h:203 AliAnalysisTaskPi0v2.h:204 AliAnalysisTaskPi0v2.h:205 AliAnalysisTaskPi0v2.h:206 AliAnalysisTaskPi0v2.h:207 AliAnalysisTaskPi0v2.h:208 AliAnalysisTaskPi0v2.h:209 AliAnalysisTaskPi0v2.h:210 AliAnalysisTaskPi0v2.h:211 AliAnalysisTaskPi0v2.h:212 AliAnalysisTaskPi0v2.h:213 AliAnalysisTaskPi0v2.h:214 AliAnalysisTaskPi0v2.h:215 AliAnalysisTaskPi0v2.h:216 AliAnalysisTaskPi0v2.h:217 AliAnalysisTaskPi0v2.h:218 AliAnalysisTaskPi0v2.h:219 AliAnalysisTaskPi0v2.h:220 AliAnalysisTaskPi0v2.h:221 AliAnalysisTaskPi0v2.h:222 AliAnalysisTaskPi0v2.h:223 AliAnalysisTaskPi0v2.h:224 AliAnalysisTaskPi0v2.h:225 AliAnalysisTaskPi0v2.h:226 AliAnalysisTaskPi0v2.h:227 AliAnalysisTaskPi0v2.h:228 AliAnalysisTaskPi0v2.h:229 AliAnalysisTaskPi0v2.h:230 AliAnalysisTaskPi0v2.h:231 AliAnalysisTaskPi0v2.h:232 AliAnalysisTaskPi0v2.h:233 AliAnalysisTaskPi0v2.h:234 AliAnalysisTaskPi0v2.h:235 AliAnalysisTaskPi0v2.h:236 AliAnalysisTaskPi0v2.h:237 AliAnalysisTaskPi0v2.h:238 AliAnalysisTaskPi0v2.h:239 AliAnalysisTaskPi0v2.h:240 AliAnalysisTaskPi0v2.h:241 AliAnalysisTaskPi0v2.h:242 AliAnalysisTaskPi0v2.h:243 AliAnalysisTaskPi0v2.h:244 AliAnalysisTaskPi0v2.h:245 AliAnalysisTaskPi0v2.h:246 AliAnalysisTaskPi0v2.h:247 AliAnalysisTaskPi0v2.h:248 AliAnalysisTaskPi0v2.h:249 AliAnalysisTaskPi0v2.h:250 AliAnalysisTaskPi0v2.h:251 AliAnalysisTaskPi0v2.h:252 AliAnalysisTaskPi0v2.h:253 AliAnalysisTaskPi0v2.h:254 AliAnalysisTaskPi0v2.h:255 AliAnalysisTaskPi0v2.h:256 AliAnalysisTaskPi0v2.h:257 AliAnalysisTaskPi0v2.h:258 AliAnalysisTaskPi0v2.h:259 AliAnalysisTaskPi0v2.h:260 AliAnalysisTaskPi0v2.h:261 AliAnalysisTaskPi0v2.h:262 AliAnalysisTaskPi0v2.h:263 AliAnalysisTaskPi0v2.h:264 AliAnalysisTaskPi0v2.h:265 AliAnalysisTaskPi0v2.h:266 AliAnalysisTaskPi0v2.h:267 AliAnalysisTaskPi0v2.h:268 AliAnalysisTaskPi0v2.h:269 AliAnalysisTaskPi0v2.h:270