1 #ifndef AliAnalysisTaskFemtoESE_cxx
2 #define AliAnalysisTaskFemtoESE_cxx
17 class AliESDtrackCuts;
20 class AliEventPoolManager;
21 class AliSpectraAODEventCuts;
22 class AliSpectraAODTrackCuts;
28 class AliFemtoESEBasicParticle;
30 #include "AliAnalysisTask.h"
31 #include "AliAnalysisTaskSE.h"
32 #include "AliESDpid.h"
33 #include "AliAODPid.h"
35 #include "AliAODEvent.h"
36 #include "AliAnalysisManager.h"
37 #include "AliAODInputHandler.h"
38 #include "AliSpectraAODEventCuts.h"
39 #include "AliSpectraAODTrackCuts.h"
41 class AliAnalysisTaskFemtoESE : public AliAnalysisTaskSE {
44 AliAnalysisTaskFemtoESE();
45 AliAnalysisTaskFemtoESE(const char* name);
46 virtual ~AliAnalysisTaskFemtoESE();
47 AliAnalysisTaskFemtoESE(const AliAnalysisTaskFemtoESE &/*obj*/);
48 AliAnalysisTaskFemtoESE &operator=(const AliAnalysisTaskFemtoESE &/*obj*/);
50 virtual void UserCreateOutputObjects();
51 virtual void UserExec(Option_t *option);
52 void TrackLoop(TObjArray *tracks, AliEventPool *pool, Int_t z, Double_t psiEP, Float_t centralityPercentile);
53 virtual void Terminate(Option_t *);
55 AliHelperPID* GetHelperPID() { return fHelperPID; }
56 void SetHelperPID(AliHelperPID* pid){ fHelperPID = pid; }
57 AliSpectraAODEventCuts* GetEventCuts() {return fEventCuts;}
58 void SetEventCuts(AliSpectraAODEventCuts* cuts) {fEventCuts = cuts;}
59 AliSpectraAODTrackCuts* GetTrackCuts() {return fTrackCuts;}
60 void SetTrackCuts(AliSpectraAODTrackCuts* cuts) {fTrackCuts = cuts;}
62 Int_t GetTrackFilterBit(){return fFilterBit;}
63 void SetTrackFilterBit(Int_t bit){fFilterBit=bit;}
64 void SetEventSelectionBit( UInt_t val ) {fSelectBit = val;}
65 void SetIsLHC10h(Bool_t val) {bIsLHC10h = val;}
66 void SetMinSepPair(Double_t eta,Double_t phi){fMinSepPairEta = eta; fMinSepPairPhi = phi;}
67 void SetMinQinv(Double_t min){fQinvMin = min;}
68 void SetMaxDCA(Double_t maxxy, Double_t maxz){fMaxDcaXY = maxxy; fMaxDcaZ = maxz;}
69 void SetPtCuts(Double_t min, Double_t max){fPtMin = min; fPtMax = max;}
70 void SetMaxEta(Double_t eta){fEtaMax = eta;}
71 void SetShareFraction(Double_t val) {fShareFraction = val;}
72 Double_t GetShareFraction() {return fShareFraction;}
73 void SetShareQuality(Double_t val) {fShareQuality = val;}
74 Double_t GetShareQuality() {return fShareQuality;}
75 void SetQPercCuts(Double_t min, Double_t max) {fMinQPerc = min; fMaxQPerc = max;}
76 Double_t GetMinQPerc(){return fMinQPerc;}
77 Double_t GetMaxQPerc(){return fMaxQPerc;}
78 void SetQPercDetector(Int_t det){fQPercDet = det;};
79 void SetEPDetector(Int_t det){fEPDet = det;};
80 void SetNMixingTracks(Int_t n){fMixingTracks = n;};
81 void SetQBinning(Int_t n, Double_t q){qbins = n; qlimit = q;};
83 void SetKtBins(Int_t n, Double_t* bins);
84 void SetEPBins(Int_t n);
85 void SetCentBins(Int_t n, Double_t* bins);
86 void SetVzBins(Int_t n, Double_t* bins);
88 //Double_t GetQPercLHC11h(Double_t qvec);
90 Double_t GetCentralityWeight(Double_t cent);
93 Double_t GetQinv(Double_t[], Double_t[]);
94 void GetQosl(Double_t[], Double_t[], Double_t&, Double_t&, Double_t&);
95 Bool_t TrackCut(AliAODTrack* ftrack);
96 Bool_t EventCut(/*AliAODEvent* fevent*/);
97 Bool_t PairCut(AliFemtoESEBasicParticle* ftrack1, AliFemtoESEBasicParticle* ftrack2, Bool_t mix);
98 Double_t DeltaPhiStar(AliAODTrack* ftrack1, AliAODTrack* ftrack2, Double_t r);
99 TObjArray* CloneAndReduceTrackList(TObjArray* tracks, Double_t psi);
100 Double_t GetDeltaPhiEP(Double_t px1, Double_t py1, Double_t px2, Double_t py2, Double_t psi);
101 Bool_t FindBin(Double_t kt, Double_t phi, Double_t cent, Int_t& a, Int_t& b, Int_t&c);
103 AliAODEvent *fAOD; //! // AOD object
104 TList *fOutputList; //! Compact Output list
105 //AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil
106 AliHelperPID* fHelperPID; // points to class for PID
107 AliEventPoolManager** fPoolMgr; //![2] event pool manager
108 AliSpectraAODEventCuts* fEventCuts;
109 AliSpectraAODTrackCuts* fTrackCuts;
111 Int_t fFilterBit; // track selection cuts
112 UInt_t fSelectBit; // Select events according to AliAnalysisTaskJetServices bit maps
117 Double_t fMinSepPairEta;
118 Double_t fMinSepPairPhi;
125 Double_t fShareQuality;
126 Double_t fShareFraction;
128 Int_t nCountSamePairs;
129 Int_t nCountMixedPairs;
138 Int_t fQPercDet; // detector used for q-vector (0-V0A, 1-V0C)
139 Int_t fEPDet; // detector used for event plane (0-V0A, 1-V0C)
141 // binning for histograms
144 Double_t* ktBins; //[nKtBins1]
147 Double_t* epBins; //[nEPBins1]
150 Double_t* epBinsMix; //[nEPBinsMix1]
153 Double_t* centBins; //[nCentBins1]
156 Double_t* vzBins; //[nVzBins1]
164 Int_t nqPercBinsLHC11h;
165 Double_t* qPercBinsLHC11h; //[nqPercBinsLHC11h]
167 //TStopwatch *stopwatch;
180 TH1D* hcentUnweighted;
182 TH3D *hphistaretapair10;
183 TH3D *hphistaretapair16;
184 TH3D *hphistaretapair10a;
185 TH3D *hphistaretapair16a;
186 TH3D *hphistaretapair10b;
187 TH3D *hphistaretapair16b;
215 TH2D* hMixedDistTracks;
216 TH2D* hMixedDistEvents;
228 ClassDef(AliAnalysisTaskFemtoESE, 1);
232 class AliFemtoESEBasicParticle : public AliAODTrack
235 AliFemtoESEBasicParticle(Double_t En, Double_t px, Double_t py, Double_t pz, Short_t charge, Double_t phi, Double_t eta)
236 : fE(En), fPx(px), fPy(py), fPz(pz), fCharge(charge), fPhi(phi), fEta(eta), fPsiEP(0.0)
239 ~AliFemtoESEBasicParticle() {}
242 virtual Double_t Px() const { return fPx;}
243 virtual Double_t Py() const { return fPy; }
244 virtual Double_t Pz() const { return fPz; }
245 virtual Double_t Pt() const { return sqrt(fPx*fPx+fPy*fPy); }
246 virtual Double_t P() const { return sqrt(fPx*fPx+fPy*fPy+fPz*fPz);; }
247 virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
249 virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
250 virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
251 virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
252 virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
254 virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; }
255 virtual Double_t Phi() const { return fPhi; }
256 virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; }
258 virtual Double_t E() const { return fE; }
259 virtual Double_t M() const { AliFatal("Not implemented"); return 0; }
261 virtual Double_t Eta() const { return fEta; }
262 virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }
264 virtual Short_t Charge() const { return fCharge; }
265 virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }
267 virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; }
268 virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
270 void SetPsiEP(Double_t psi) {fPsiEP = psi;}
271 Double_t GetPsiEP() {return fPsiEP;}
273 /*void SetTPCClusterMap(TBits b){fClusterMap = TBits(b);};
274 void SetTPCSharedMap(TBits b){fSharedMap = TBits(b);};
275 TBits GetTPCClusterMap(){return fClusterMap;};
276 TBits GetTPCSharedMap(){return fSharedMap;};*/
291 ClassDef( AliFemtoESEBasicParticle, 1);