]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/hfe/AliAnalysisTaskHFEFlow.h
Update
[u/mrichter/AliRoot.git] / PWGHF / hfe / AliAnalysisTaskHFEFlow.h
CommitLineData
8c1c76e9 1/**************************************************************************\r
2* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *\r
3* *\r
4* Author: The ALICE Off-line Project. *\r
5* Contributors are mentioned in the code where appropriate. *\r
6* *\r
7* Permission to use, copy, modify and distribute this software and its *\r
8* documentation strictly for non-commercial purposes is hereby granted *\r
9* without fee, provided that the above copyright notice appears in all *\r
10* copies and that both the copyright notice and this permission notice *\r
11* appear in the supporting documentation. The authors make no claims *\r
12* about the suitability of this software for any purpose. It is *\r
13* provided "as is" without express or implied warranty. *\r
14**************************************************************************/\r
15//\r
16// Flow task class for the ALICE HFE group\r
17//\r
18//\r
19#ifndef ALIANALYSISTASKHFEFLOW_H\r
20#define ALIANALYSISTASKHFEFLOW_H\r
21\r
22\r
23\r
24\r
25#include <AliAnalysisTaskSE.h>\r
26\r
27class TList;\r
0e30407a 28class AliVTrack;\r
29class AliVEvent;\r
30class AliESDtrack;\r
31class AliESDEvent;\r
32class AliMCEvent;\r
8c1c76e9 33class AliFlowTrackCuts;\r
34class AliFlowCandidateTrack;\r
35class AliHFEcuts;\r
36class AliHFEpid;\r
37class TH1D;\r
38class TH2D;\r
e17c1f86 39class TProfile;\r
40class TProfile2D;\r
8c1c76e9 41class THnSparse;\r
42class AliHFEpidQAmanager;\r
43class AliFlowEvent;\r
0e30407a 44class AliESDtrackCuts;\r
a8ef1999 45class AliHFEVZEROEventPlane;\r
0e30407a 46class TArrayI;\r
8c1c76e9 47\r
48class AliAnalysisTaskHFEFlow: public AliAnalysisTaskSE {\r
49 \r
50public:\r
0e30407a 51\r
52 typedef enum{\r
53 kElectronfromconversion = 0,\r
54 kElectronfromconversionboth = 1,\r
55 kElectronfrompi0 = 2,\r
56 kElectronfrompi0both = 3,\r
57 kElectronfromC = 4,\r
58 kElectronfromB = 5,\r
59 kElectronfrometa = 6,\r
60 kElectronfrometaboth = 7,\r
61 kElectronfromother = 8\r
62 } FlowSource_t;\r
63 \r
64 typedef enum{\r
65 kS = 0,\r
66 kOp = 1\r
67 } FlowSign_t;\r
68\r
69\r
70\r
71\r
8c1c76e9 72 AliAnalysisTaskHFEFlow();\r
73 AliAnalysisTaskHFEFlow(const char *name);\r
a8ef1999 74 AliAnalysisTaskHFEFlow(const AliAnalysisTaskHFEFlow &ref);\r
75 AliAnalysisTaskHFEFlow& operator=(const AliAnalysisTaskHFEFlow &ref);\r
76 virtual void Copy(TObject &o) const;\r
77 virtual ~AliAnalysisTaskHFEFlow();\r
8c1c76e9 78 \r
79 virtual void UserExec(Option_t */*option*/);\r
80 virtual void UserCreateOutputObjects();\r
81\r
4102d1cc 82 void SetAODAnalysis(Bool_t aodAnalysis) { fAODAnalysis = aodAnalysis; };\r
83 void SetUseFlagAOD(Bool_t useFlagAOD) { fUseFlagAOD = useFlagAOD; }\r
84 void SetApplyCut(Bool_t applyCut) { fApplyCut = applyCut; }\r
85 void SetFlags(ULong_t flags) { fFlags = flags; }\r
86 \r
8c1c76e9 87 AliHFEpid *GetPID() const { return fPID; }\r
a8ef1999 88 AliHFEpidQAmanager *GetPIDQAManager() const { return fPIDqa; }\r
0e30407a 89 AliHFEpid *GetPIDBackground() const { return fPIDBackground; }\r
90 AliHFEpidQAmanager *GetPIDBackgroundQAManager() const { return fPIDBackgroundqa; }\r
91\r
a8ef1999 92\r
8c1c76e9 93 void SetHFECuts(AliHFEcuts * const cuts) { fHFECuts = cuts; };\r
0e30407a 94 void SetHFEBackgroundCuts(AliESDtrackCuts * const cuts) { fHFEBackgroundCuts = cuts; };\r
8c1c76e9 95 void SetSubEtaGapTPC(Bool_t subEtaGapTPC) { fSubEtaGapTPC = subEtaGapTPC; };\r
96 void SetEtaGap(Double_t etaGap) { fEtaGap = etaGap; };\r
e17c1f86 97 void SetVZEROEventPlane(Bool_t vzeroEventPlane) { fVZEROEventPlane = vzeroEventPlane; };\r
98 void SetVZEROEventPlaneA(Bool_t vzeroEventPlaneA) { fVZEROEventPlaneA = vzeroEventPlaneA; };\r
99 void SetVZEROEventPlaneC(Bool_t vzeroEventPlaneC) { fVZEROEventPlaneC = vzeroEventPlaneC; };\r
a8ef1999 100 void SetHFEVZEROEventPlane(AliHFEVZEROEventPlane *hfeVZEROEventPlane) { fHFEVZEROEventPlane = hfeVZEROEventPlane; };\r
8c1c76e9 101\r
e17c1f86 102 void SetNbBinsCentralityQCumulant(Int_t nbBinsCentralityQCumulant) { fNbBinsCentralityQCumulant = nbBinsCentralityQCumulant; };\r
103 void SetBinCentralityLess(Int_t k, Float_t value) { fBinCentralityLess[k] = value; };\r
8c1c76e9 104 void SetNbBinsPtQCumulant(Int_t nbBinsPtQCumulant) { fNbBinsPtQCumulant = nbBinsPtQCumulant; };\r
105 void SetMinPtQCumulant(Double_t minPtQCumulant) { fMinPtQCumulant = minPtQCumulant; };\r
106 void SetMaxPtQCumulant(Double_t maxPtQCumulant) { fMaxPtQCumulant = maxPtQCumulant; };\r
107\r
108 void SetAfterBurnerOn(Bool_t afterBurnerOn) { fAfterBurnerOn = afterBurnerOn; };\r
109 void SetNonFlowNumberOfTrackClones(Int_t nonFlowNumberOfTrackClones) { fNonFlowNumberOfTrackClones = nonFlowNumberOfTrackClones; };\r
110 void SetV1V2V3V4V5(Double_t v1,Double_t v2,Double_t v3,Double_t v4,Double_t v5) {fV1 = v1; fV2 = v2; fV3 = v3; fV4 = v4; fV5 = v5; };\r
111 void SetMaxNumberOfIterations(Int_t maxNumberOfIterations) { fMaxNumberOfIterations = maxNumberOfIterations; };\r
112 void SetPrecisionPhi(Double_t precisionPhi) { fPrecisionPhi = precisionPhi;};\r
113 void SetUseMCReactionPlane(Bool_t useMCReactionPlane) { fUseMCReactionPlane = useMCReactionPlane;};\r
114 void SetMCPID(Bool_t mcPID) { fMCPID = mcPID;};\r
a8ef1999 115 void SetNoPID(Bool_t noPID) { fNoPID = noPID;};\r
8c1c76e9 116\r
e17c1f86 117 void SetDebugLevel(Int_t debugLevel) { fDebugLevel = debugLevel;};\r
118\r
119 Int_t GetNbBinsCentralityQCumulant() const { return fNbBinsCentralityQCumulant; };\r
120 Double_t GetBinCentralityLess(Int_t k) const { return fBinCentralityLess[k]; };\r
8c1c76e9 121 \r
122 AliFlowCandidateTrack *MakeTrack( Double_t mass, Double_t pt, Double_t phi, Double_t eta) ;\r
123 Double_t GetPhiAfterAddV2(Double_t phi,Double_t reactionPlaneAngle) const;\r
0e30407a 124\r
125 void SetMaxInvmass(Double_t maxInvmass) { fMaxInvmass = maxInvmass; };\r
126 void SetMaxopening3D(Double_t maxOpening3D) { fMaxopening3D = maxOpening3D; };\r
127 void SetMaxopeningtheta(Double_t maxOpeningtheta) { fMaxopeningtheta = maxOpeningtheta; };\r
128 void SetMaxopeningphi(Double_t maxOpeningphi) { fMaxopeningphi = maxOpeningphi; };\r
129\r
130 Int_t LookAtNonHFE(Int_t iTrack1, AliVTrack *track1, AliVEvent *fESD, AliMCEvent *mcEvent,Int_t binct,Double_t deltaphi,Int_t source,Int_t indexmother);\r
8c1c76e9 131 \r
132private:\r
11ff28c5 133 TList *fListHist; //! TH list\r
134 Bool_t fAODAnalysis; // AOD analysis\r
4102d1cc 135 Bool_t fUseFlagAOD; // Use the preselected AOD track\r
136 Bool_t fApplyCut; // Apply the analysis cut for AOD tracks\r
137 ULong_t fFlags; // reconstruction AOD status flags \r
138 \r
a8ef1999 139 Bool_t fVZEROEventPlane; // Use Event Planes from VZERO\r
e17c1f86 140 Bool_t fVZEROEventPlaneA; // Use Event Planes from VZERO A\r
141 Bool_t fVZEROEventPlaneC; // Use Event Planes from VZERO C\r
142\r
a8ef1999 143 Bool_t fSubEtaGapTPC; // bool to fill with eta gap\r
144 Double_t fEtaGap; // Value of the eta gap\r
8c1c76e9 145\r
e17c1f86 146 Int_t fNbBinsCentralityQCumulant; // Number of Bins Q Cumulant\r
a8ef1999 147 Double_t fBinCentralityLess[10]; // Centrality Bin lower value\r
148 Int_t fNbBinsPtQCumulant; // Nbbinspt QCumulant method\r
149 Double_t fMinPtQCumulant; // Min pt QCumulant method\r
150 Double_t fMaxPtQCumulant; // Max pt QCumulant method\r
151 Bool_t fAfterBurnerOn; // Add flow to all tracks\r
8c1c76e9 152 Int_t fNonFlowNumberOfTrackClones; // number of times to clone the particles (nonflow) \r
153 Double_t fV1; // Add Flow. Must be in range [0,0.5].\r
154 Double_t fV2; // Add Flow. Must be in range [0,0.5].\r
155 Double_t fV3; // Add Flow. Must be in range [0,0.5].\r
156 Double_t fV4; // Add Flow. Must be in range [0,0.5].\r
157 Double_t fV5; // Add Flow. Must be in range [0,0.5].\r
158 Int_t fMaxNumberOfIterations; // Max number of iteration for adding v2\r
159 Double_t fPrecisionPhi; // precision phi for adding v2\r
160 Bool_t fUseMCReactionPlane; // use MC reaction plane\r
161\r
162 Bool_t fMCPID; // MC PID for electrons\r
a8ef1999 163 Bool_t fNoPID; // No PID for checks\r
e17c1f86 164\r
0e30407a 165 Double_t fChi2OverNDFCut; // Limit chi2\r
166 Double_t fMaxdca; // Limit dca\r
167 Double_t fMaxopeningtheta; // Limit opening angle in theta\r
168 Double_t fMaxopeningphi; // Limit opening angle in phi\r
169 Double_t fMaxopening3D; // Limit opening 3D\r
170 Double_t fMaxInvmass; // Limit invariant mass\r
171 \r
172\r
e17c1f86 173 Int_t fDebugLevel; // Debug Level \r
8c1c76e9 174\r
175 // Cuts for FLOW PWG2\r
176 AliFlowTrackCuts* fcutsRP; // Reference particle cut\r
177 AliFlowTrackCuts* fcutsPOI; // Particle Of Interest cut\r
178 \r
179 // Cuts for HFE\r
a8ef1999 180 AliHFEcuts *fHFECuts; // HFE cuts\r
181 AliHFEpid *fPID; // PID cuts \r
182 AliHFEpidQAmanager *fPIDqa; // QA Manager\r
0e30407a 183 AliFlowEvent *fflowEvent; //! Flow event \r
184\r
185 // Cuts for background study\r
186 AliESDtrackCuts *fHFEBackgroundCuts; // HFE background cuts\r
187 AliHFEpid *fPIDBackground; // PID background cuts \r
188 AliHFEpidQAmanager *fPIDBackgroundqa; // QA Manager Background \r
189 Bool_t fAlgorithmMA; // algorithm MA\r
190\r
191 // List of tracks\r
192 TArrayI *fArraytrack; // list of tracks\r
193 Int_t fCounterPoolBackground; // number of tracks\r
8c1c76e9 194\r
a8ef1999 195 // VZERO Event plane after calibration 2010\r
196 AliHFEVZEROEventPlane *fHFEVZEROEventPlane; // VZERO event plane calibrated\r
197 \r
8c1c76e9 198 // Histos\r
a8ef1999 199 TH2D *fHistEV; //! Number of events\r
8c1c76e9 200 \r
e17c1f86 201 // A Event plane as function of phiepa, phiepb, phiepc, phiepd centrality \r
202 // a V0A, b V0C, c TPC, d V0\r
a8ef1999 203 THnSparseF *fEventPlane; //! Event plane\r
8c1c76e9 204 \r
205 // B Event Plane after subtraction as function of phiep, centrality \r
a8ef1999 206 THnSparseF *fEventPlaneaftersubtraction; //! Event plane\r
8c1c76e9 207\r
e17c1f86 208 // Monitoring Event plane: cos2phi, sin2phi, centrality\r
a8ef1999 209 THnSparseF *fCosSin2phiep; //! Cos(2phi), Sin(2phi)\r
e17c1f86 210 \r
8c1c76e9 211 // E Monitoring Event plane after subtraction of the track: cos, centrality, pt, eta\r
a8ef1999 212 THnSparseF *fCos2phie; //! Monitoring\r
213 THnSparseF *fSin2phie; //! Monitoring\r
214 THnSparseF *fCos2phiep; //! Monitoring\r
215 THnSparseF *fSin2phiep; //! Monitoring\r
216 THnSparseF *fSin2phiephiep; //! Monitoring\r
e17c1f86 217\r
218 // Fbis Resolution as function of cosres, cosres, cosres, centrality for three subevents (V0)\r
219 // a V0A, b V0C, c TPC\r
a8ef1999 220 THnSparseF *fCosResabc; //! Res\r
221 THnSparseF *fSinResabc; //! Res\r
222 TProfile *fProfileCosResab; //! Profile Res_a_b\r
223 TProfile *fProfileCosResac; //! Profile Res_a_c\r
224 TProfile *fProfileCosResbc; //! Profile Res_b_c\r
8c1c76e9 225 \r
e17c1f86 226 // F Resolution as function of cosres, centrality for two subevents (TPC)\r
a8ef1999 227 THnSparseF *fCosRes; //! Res\r
228 THnSparseF *fSinRes; //! Res\r
229 TProfile *fProfileCosRes; //! Profile Res\r
8c1c76e9 230 \r
0e30407a 231 // Debuging Cuts step by step all centrality together: pt, step (6)\r
232 THnSparseF *fTrackingCuts; //! Tracking Cuts\r
233\r
234 // Before PID cut\r
235 // G Maps delta phi as function of deltaphi, centrality, pt\r
236 THnSparseF *fDeltaPhiMapsBeforePID; //! Delta phi\r
237 // H Maps cos phi : cos, centrality, pt\r
238 THnSparseF *fCosPhiMapsBeforePID; //! Cos\r
239\r
8c1c76e9 240 // G Maps delta phi as function of deltaphi, centrality, pt\r
a8ef1999 241 THnSparseF *fDeltaPhiMaps; //! Delta phi\r
8c1c76e9 242 // H Maps cos phi : cos, centrality, pt\r
a8ef1999 243 THnSparseF *fCosPhiMaps; //! Cos\r
244 TProfile2D *fProfileCosPhiMaps; //! Profile Cos\r
0e30407a 245\r
246 // Background study: not statistic but tagged \r
247 THnSparseF *fDeltaPhiMapsTaggedPhotonic; //! Delta phi\r
248 THnSparseF *fCosPhiMapsTaggedPhotonic; //! Cos\r
249 THnSparseF *fDeltaPhiMapsTaggedNonPhotonic; //! Delta phi\r
250 THnSparseF *fCosPhiMapsTaggedNonPhotonic; //! Cos\r
251 THnSparseF *fDeltaPhiMapsTaggedPhotonicLS; //! Delta phi\r
252 THnSparseF *fCosPhiMapsTaggedPhotonicLS; //! Cos\r
253\r
254 // Background study: centrality, pt, source\r
255 THnSparseF *fMCSourceDeltaPhiMaps; //! Source MC\r
256 // Background study: deltaphi, centrality, pt, minv, source\r
257 THnSparseF *fOppSignDeltaPhiMaps; //! Delta phi\r
258 THnSparseF *fSameSignDeltaPhiMaps; //! Delta phi\r
259 // Background study: angle, centrality, source\r
260 THnSparseF *fOppSignAngle; // ! Opening Angles\r
261 THnSparseF *fSameSignAngle; // ! Opening Angles\r
262\r
263 Int_t FindMother(Int_t tr, AliMCEvent *mcEvent, Int_t &indexmother);\r
264 Int_t IsMotherGamma(Int_t tr, AliMCEvent* mcEvent);\r
265 Int_t IsMotherPi0(Int_t tr, AliMCEvent* mcEvent);\r
266 Int_t IsMotherC(Int_t tr, AliMCEvent* mcEvent);\r
267 Int_t IsMotherB(Int_t tr, AliMCEvent* mcEvent);\r
268 Int_t IsMotherEta(Int_t tr, AliMCEvent* mcEvent);\r
269 \r
8c1c76e9 270 \r
271 ClassDef(AliAnalysisTaskHFEFlow, 1); // analysisclass\r
272};\r
273\r
274#endif\r