1 #ifndef AliAnalysisTaskPi0v2_cxx
2 #define AliAnalysisTaskPi0v2_cxx
4 #include "AliAnalysisTaskSE.h"
9 #include "AliConversionSelection.h"
10 #include "AliConversionMesonCuts.h"
11 #include "AliV0ReaderV1.h"
12 #include "AliEventplane.h"
18 class AliAnalysisTaskPi0v2 : public AliAnalysisTaskSE{
22 enum EEventPlaneMethod{
44 static const Int_t knBinsPhi=6;
46 AliAnalysisTaskPi0v2(const char *name="pi0v2",Int_t harmonic=2);
47 AliAnalysisTaskPi0v2(const AliAnalysisTaskPi0v2&); // not implemented
48 AliAnalysisTaskPi0v2& operator=(const AliAnalysisTaskPi0v2&); // not implemented
49 virtual ~AliAnalysisTaskPi0v2();
51 virtual void UserCreateOutputObjects();
52 virtual void UserExec(Option_t *option);
53 virtual void Terminate(Option_t *);
55 void SetCentralityBins(Double_t *bins,Int_t nbins);
57 void SetMeson(EPDGCode meson){fMesonPDGCode=meson;}
59 void SetNBinsPhi(Int_t nbins){fNBinsPhi=nbins;}
60 void SetV0Reader(AliV0ReaderV1 *v0Reader){fV0Reader=v0Reader;}
61 void SetInvMassRange(Double_t range[2]){fInvMassRange[0]=range[0];fInvMassRange[1]=range[1];};
62 void SetEtaGap(Double_t gapsize){fEtaGap=gapsize;};
64 void SetMesonCuts(const TString cut);
65 void SetCuts(AliConversionSelection **conversionselection,Int_t numberOfCuts);
67 void SetFillQA(Bool_t fill){fFillQA=fill;}
69 void SetEPSelectionMask(Int_t mask[knEPMethod]){for(Int_t ii=0;ii<knEPMethod;ii++)fEPSelectionMask[ii]=mask[ii];};
74 void ProcessGammas(Int_t iCut,EEventPlaneMethod iEP);
75 void ProcessPi0s(Int_t iCut,EEventPlaneMethod iEP);
78 Double_t GetPhiwrtRP(Double_t dPhi);
79 Double_t GetPhotonPhiwrtRP(AliAODConversionPhoton *gamma,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
80 Double_t GetPi0PhiwrtRP(AliAODConversionMother *pi0,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
81 Double_t GetChargedPhiwrtRP(AliVTrack *charged,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
82 void GetPhotondNdPhi(Int_t *dNdPhi,Int_t iEP,Int_t iCut=0);
83 void GetChargeddNdPhi(Int_t *dNdPhi,Int_t &ntot,Int_t iEP);
84 Int_t GetPhiBin(Double_t phiwrt);
85 Int_t GetPhotonPhiBin(AliAODConversionPhoton *gamma,Int_t iEP);
86 Double_t GetMCPhotonPhiwrtRP(TParticle *gamma,EEventPlaneMethod iEP,Bool_t bDoFlattening=kTRUE);
87 TVector2 GetEPContribution(AliAODConversionPhoton *gamma);
88 Double_t GetEventPlaneAngle(EEventPlaneMethod EPmethod,Double_t eta=0,AliAODConversionPhoton *gamma0=NULL,AliAODConversionPhoton *gamma1=NULL,Bool_t bDoFlattening=kTRUE);
89 Double_t GetTPCSubEPEta(EEventPlane ep);
90 Double_t GetCorrectedTPCEPAngle(AliAODConversionPhoton *gamma0=NULL,AliAODConversionPhoton *gamma1=NULL,Bool_t bDoFlattening=kTRUE);
91 Bool_t SetCentrality();
92 void ProcessEventPlane();
93 Int_t GetRadialBin(Double_t radius);
94 Int_t GetRunIndex(Int_t run);
95 Double_t ApplyFlattening(Double_t phi,EEventPlane ep);
96 Bool_t GetTPCEventPlane();
98 void GetV0EP(AliVEvent * event,Double_t &rpv0a,Double_t &rpv0c);
99 void LoadVZEROCalibration(Int_t run);
100 void LoadTPCCalibration(Int_t run);
102 Double_t GetWeight(TObject* track1);
103 Double_t GetPhiWeight(TObject* track1);
104 TH1F* SelectPhiDist(AliVTrack *track);
106 Double_t GetPsiInRange(Double_t phi);
108 TObjArray* GetEventPlaneTracks(Int_t &maxID);
109 TVector2 GetContributionEP(AliVTrack *track);
110 Int_t GetAODEPTrackFilterBit();
131 static const Int_t knbinsGammaMult=3;
133 static const Int_t kGCnYBinsSpectra = 80;
134 static const Double_t kGCfirstYBinSpectra = 0.;
135 static const Double_t kGClastYBinSpectra = 8.;
137 // Class variables and pointer
139 AliV0ReaderV1 *fV0Reader; // V0Reader
140 Int_t fNCuts; // Number of Photon Cuts for v2 analysis
141 AliConversionSelection **fConversionSelection; //[fNCuts] Selection of Particles for given Cut
142 TClonesArray *fConversionGammas; //Reconstructed Photons;
143 Int_t fNCentralityBins; // Number of Centrality Bins
144 Double_t *fCentralityBins; //[fNCentralityBins] CentralityBins for Analysis
145 Float_t fCentrality; //Event Centrality
146 Int_t fCentralityBin; // Event Centrality Bin
147 Int_t fNBinsPhi; // Number of Phi wrt RP bins
148 AliEventplane *fEP; // Event Plane Pointer
149 Bool_t fUseTPCOnlyTracks; // Use TPC Only Tracks for EP
150 Double_t fEtaMax; // Eta Max for analysis;
151 Double_t fEtaGap; // Eta Gap
152 Double_t fRPTPCEtaA; // TPCEtaA event plane
153 Double_t fRPTPCEtaC; // TPCEtaC event plane
154 Double_t fRPV0A; // V0A event plane
155 Double_t fRPV0C; // V0C event plane
156 Double_t fRPTPC; // TPC event plane
157 Double_t fRPTPCEtaABF; // TPCEtaA event plane before flattening
158 Double_t fRPTPCEtaCBF; // TPCEtaC event plane before flattening
159 Double_t fRPV0ABF;// V0A event plane before flattening
160 Double_t fRPV0CBF;// V0C event plane before flattening
161 Double_t fRPTPCBF;// TPC event plane before flattening
162 AliConversionCuts *fConversionCuts; // Cuts used by the V0Reader
163 TRandom3 *fRandomizer; // Randomizer for Event Plane Randomisation
164 TList *fOutputList; // List for Output (Histograms etc.)
165 EPDGCode fMesonPDGCode; // PDG Code of the processed Meson (for MC truth)
166 Double_t fInvMassRange[2]; // Inv Mass Range
167 Double_t fDeltaPsiRP; // Difference between subEventPlane angles
168 Int_t fRunNumber; // current run number
169 Int_t fRunIndex; // current internal run index
170 Int_t fNEPMethods; // number of EP methods
171 Bool_t fFillQA; // Fill QA Histograms
172 Int_t fHarmonic; // Harmonic to be analyzed (v2,v3,..)
173 Double_t fPsiMax; //Range for Psi
174 TString fPeriod; //"LHC11h","LHC10h"
175 Bool_t fIsAOD; // Is AOD? else ESD
176 TH1F* fPhiDist[4]; // array of Phi distributions used to calculate phi weights
177 THnSparse *fSparseDist; //! THn for eta-charge phi-weighting
178 TH1F *fHruns; // information about runwise statistics of phi-weights
179 Bool_t fDoEPFlattening; // Do flattening
180 Int_t fEPSelectionMask[knEPMethod]; // Which EP methods shall be applied
201 TH2F *hCos2V0ATPCEtaA;
202 TH2F *hCos2V0ATPCEtaC;
203 TH2F *hCos2V0CTPCEtaA;
204 TH2F *hCos2V0CTPCEtaC;
205 TH2F *hCos2SumWeights;
209 TH2F *hGammaMultCent;
211 TH2F *hMultChargedvsNGamma;
212 TH2F *hMultChargedvsVZERO;
213 TH2F *hMultChargedvsSPD;
215 THnSparseF *hGammadNdPhi;
216 THnSparseF *hGammaMultdPhiTRUE;
217 THnSparseF *hGammaMultdPhiRECOTRUE;
218 THnSparseF *hGammaMultTRUE;
219 THnSparseF *hGammaMultRECOTRUE;
220 THnSparseF **hGammaMultdPhi;
221 THnSparseF **hGammaMult;
224 THnSparseF *hGammaFull;
226 THnSparseF *hCharged;
234 static const Int_t nCentrBinV0 = 9; // # cenrality bins
235 TProfile *fMultV0; // object containing VZERO calibration information
236 Float_t fV0Cpol,fV0Apol; // loaded by OADB
237 Float_t fMeanQ[nCentrBinV0][2][2]; // and recentering
238 Float_t fWidthQ[nCentrBinV0][2][2]; // ...
241 //THnSparse *hEPVertex;
244 ClassDef(AliAnalysisTaskPi0v2, 4); // example of analysis