]>
Commit | Line | Data |
---|---|---|
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 | |
27 | class TList;\r | |
0e30407a | 28 | class AliVTrack;\r |
29 | class AliVEvent;\r | |
30 | class AliESDtrack;\r | |
31 | class AliESDEvent;\r | |
32 | class AliMCEvent;\r | |
8c1c76e9 | 33 | class AliFlowTrackCuts;\r |
34 | class AliFlowCandidateTrack;\r | |
35 | class AliHFEcuts;\r | |
36 | class AliHFEpid;\r | |
37 | class TH1D;\r | |
38 | class TH2D;\r | |
e17c1f86 | 39 | class TProfile;\r |
40 | class TProfile2D;\r | |
8c1c76e9 | 41 | class THnSparse;\r |
42 | class AliHFEpidQAmanager;\r | |
43 | class AliFlowEvent;\r | |
0e30407a | 44 | class AliESDtrackCuts;\r |
a8ef1999 | 45 | class AliHFEVZEROEventPlane;\r |
0e30407a | 46 | class TArrayI;\r |
8c1c76e9 | 47 | \r |
48 | class AliAnalysisTaskHFEFlow: public AliAnalysisTaskSE {\r | |
49 | \r | |
50 | public:\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 |
132 | private:\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 |