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, 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 SetShareFraction(Double_t val) {fShareFraction = val;}
68 Double_t GetShareFraction() {return fShareFraction;}
69 void SetShareQuality(Double_t val) {fShareQuality = val;}
70 Double_t GetShareQuality() {return fShareQuality;}
71 void SetQPercCuts(Double_t min, Double_t max) {fMinQPerc = min; fMaxQPerc = max;}
72 Double_t GetMinQPerc(){return fMinQPerc;}
73 Double_t GetMaxQPerc(){return fMaxQPerc;}
74 void SetQPercDetector(Int_t det){fQPercDet = det;};
75 void SetEPDetector(Int_t det){fEPDet = det;};
76 void SetNMixingTracks(Int_t n){fMixingTracks = n;};
78 void SetKtBins(Int_t n, Double_t* bins);
79 void SetEPBins(Int_t n, Double_t min, Double_t max);
80 void SetCentBins(Int_t n, Double_t* bins);
81 void SetVzBins(Int_t n, Double_t* bins);
83 Double_t GetQPercLHC11h(Double_t qvec);
86 Double_t GetQinv2(Double_t[], Double_t[]);
87 void GetQosl(Double_t[], Double_t[], Double_t&, Double_t&, Double_t&);
88 Bool_t TrackCut(AliAODTrack* ftrack);
89 Bool_t EventCut(/*AliAODEvent* fevent*/);
90 Bool_t PairCut(AliFemtoESEBasicParticle* ftrack1, AliFemtoESEBasicParticle* ftrack2, Bool_t mix);
91 Double_t DeltaPhiStar(AliAODTrack* ftrack1, AliAODTrack* ftrack2, Double_t r);
92 TObjArray* CloneAndReduceTrackList(TObjArray* tracks, Double_t psi);
93 Double_t GetDeltaPhiEP(Double_t px1, Double_t py1, Double_t px2, Double_t py2, Double_t psi);
94 Bool_t FindBin(Double_t kt, Double_t phi, Double_t cent, Int_t& a, Int_t& b, Int_t&c);
96 AliAODEvent *fAOD; //! // AOD object
97 TList *fOutputList; //! Compact Output list
98 //AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil
99 AliHelperPID* fHelperPID; // points to class for PID
100 AliEventPoolManager** fPoolMgr; //[2] event pool manager
101 AliSpectraAODEventCuts* fEventCuts;
102 AliSpectraAODTrackCuts* fTrackCuts;
104 Int_t fFilterBit; // track selection cuts
105 UInt_t fSelectBit; // Select events according to AliAnalysisTaskJetServices bit maps
110 Double_t fMinSepPairEta;
111 Double_t fMinSepPairPhi;
112 Double_t fShareQuality;
113 Double_t fShareFraction;
115 Int_t nCountSamePairs;
116 Int_t nCountMixedPairs;
122 Int_t fQPercDet; // detector used for q-vector (0-V0A, 1-V0C)
123 Int_t fEPDet; // detector used for event plane (0-V0A, 1-V0C)
126 Double_t fPsiEPmixtemp;
128 // binning for histograms
131 Double_t* ktBins; //[nKtBins1]
134 Double_t* epBins; //[nEPBins1]
137 Double_t* centBins; //[nCentBins1]
140 Double_t* vzBins; //[nVzBins1]
147 Int_t nqPercBinsLHC11h;
148 Double_t* qPercBinsLHC11h; //[nqPercBinsLHC11h]
150 //TStopwatch *stopwatch;
164 TH3D *hphistaretapair10;
165 TH3D *hphistaretapair16;
166 TH3D *hphistaretapair10a;
167 TH3D *hphistaretapair16a;
168 TH3D *hphistaretapair10b;
169 TH3D *hphistaretapair16b;
199 ClassDef(AliAnalysisTaskFemtoESE, 1);
203 class AliFemtoESEBasicParticle : public AliAODTrack
206 AliFemtoESEBasicParticle(Double_t En, Double_t px, Double_t py, Double_t pz, Short_t charge, Double_t phi, Double_t eta)
207 : fE(En), fPx(px), fPy(py), fPz(pz), fCharge(charge), fPhi(phi), fEta(eta), fPsiEP(0.0)
210 ~AliFemtoESEBasicParticle() {}
213 virtual Double_t Px() const { return fPx;}
214 virtual Double_t Py() const { return fPy; }
215 virtual Double_t Pz() const { return fPz; }
216 virtual Double_t Pt() const { return sqrt(fPx*fPx+fPy*fPy); }
217 virtual Double_t P() const { return sqrt(fPx*fPx+fPy*fPy+fPz*fPz);; }
218 virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
220 virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }
221 virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }
222 virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }
223 virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }
225 virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; }
226 virtual Double_t Phi() const { return fPhi; }
227 virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; }
229 virtual Double_t E() const { return fE; }
230 virtual Double_t M() const { AliFatal("Not implemented"); return 0; }
232 virtual Double_t Eta() const { return fEta; }
233 virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }
235 virtual Short_t Charge() const { return fCharge; }
236 virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }
238 virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; }
239 virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }
241 void SetPsiEP(Double_t psi) {fPsiEP = psi;}
242 Double_t GetPsiEP() {return fPsiEP;}
244 /*void SetTPCClusterMap(TBits b){fClusterMap = TBits(b);};
245 void SetTPCSharedMap(TBits b){fSharedMap = TBits(b);};
246 TBits GetTPCClusterMap(){return fClusterMap;};
247 TBits GetTPCSharedMap(){return fSharedMap;};*/
262 ClassDef( AliFemtoESEBasicParticle, 1);