]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG/FLOW/Tasks/AliAnalysisTaskFlowStrange.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWG / FLOW / Tasks / AliAnalysisTaskFlowStrange.h
CommitLineData
24373b38 1/////////////////////////////////////////////////////
2// AliAnalysisTaskFlowStrange:
3// Analysis task to select K0/Lambda candidates for flow analysis.
4// Authors: Cristian Ivan (civan@cern.ch)
5// Carlos Perez (cperez@cern.ch)
6// Pawel Debski (pdebski@cern.ch)
7//////////////////////////////////////////////////////
8
9/* Copyright(c) 1998-1999, ALICExperiment at CERN, All rights reserved. *
10* See cxx source for full Copyright notice */
11/* $Id: $ */
12
13#ifndef AliAnalysisTaskFlowStrange_H
14#define AliAnalysisTaskFlowStrange_H
15
16#include "AliAnalysisTaskSE.h"
17
18class TList;
19class TH2D;
20class TObjArray;
21class TClonesArray;
22class AliAODMCParticle;
23class AliESDtrackCuts;
24class AliFlowEventCuts;
25class AliPIDResponse;
26class AliESDEvent;
27class AliAODEvent;
28class AliAODv0;
29class AliESDv0;
30class AliVVertex;
31class AliFlowBayesianPID;
32class AliAODVertex;
33
34class AliAnalysisTaskFlowStrange : public AliAnalysisTaskSE {
35 public:
36 enum Especie {kKZE=0,kLDA=1,kLDABAR=2,kLDAALL=3,kCHARGED=90,kPION=91,kKAON=92,kPROTON=93};
37 AliAnalysisTaskFlowStrange();
38 AliAnalysisTaskFlowStrange(const Char_t *name);
39 virtual ~AliAnalysisTaskFlowStrange();
40 virtual void UserCreateOutputObjects();
41 virtual void Exec(Option_t*);
42 virtual void UserExec(Option_t *);
43 virtual void Terminate(Option_t *);
44
45 void MyUserExec(Option_t *);
46 void SetDebug(Int_t val=1) {fDebug = val;}
47 void SetQAlevel(Int_t qa) {fQAlevel = qa;}
48
49 void SetMass(Int_t n, Double_t m, Double_t M) {fMassBins=n;fMinMass=m;fMaxMass=M;}
50
51 void SetpA() {fRunOnpA = kTRUE; fRunOnpp = kFALSE;}
52 void Setpp() {fRunOnpA = kFALSE; fRunOnpp = kTRUE; }
53 void SetK0L0(Int_t specie) {fSpecie=specie;}
54 void SetOnline(Bool_t val) {fOnline=val;}
55 void SetHomemade(Bool_t val) {fHomemade=val;}
56 void SetExcludeTPCEdges(Bool_t value) {fExcludeTPCEdges=value;}
57 void SetCentralityRange(TString val, Int_t m, Int_t M) {fCentMethod=val; fCentPerMin=m; fCentPerMax=M;}
58 void SetReadESD(Bool_t val) {fReadESD=val;}
59 void SetReadMC(Bool_t val) {fReadMC=val;}
512ced40 60 void SetPostMatched(Int_t val) {fPostMatched=val;}
24373b38 61 void SetAvoidExec(Bool_t val) {fAvoidExec=val;}
62 void SetSkipSelection(Bool_t val) {fSkipSelection=val;}
63 void SetSkipFlow(Bool_t val) {fSkipFlow=val;}
64 void SetUseFlowPackage(Bool_t val) {fUseFP=val;}
65 void SetExtraEventRejection(Bool_t val) {fExtraEventRejection=val;}
512ced40 66 void SetVertexZcut(Double_t val) {fVertexZcut=val;}
24373b38 67
68 void SetWhichPsi(Int_t val) {fWhichPsi=val;}
69 void SetStoreVZEResponse(Bool_t val) {fVZEsave=val;}
70 void LoadVZEResponse(TList *val, Bool_t val2=kFALSE, Bool_t val3=kTRUE) {fVZEload=val;fVZEmb=val2;fVZEByDisk=val3;}
71
72 void SetRFPFilterBit(Int_t val) {fRFPFilterBit=val;}
73 void SetRFPMinPt(Double_t val) {fRFPminPt=val;}
74 void SetRFPMaxPt(Double_t val) {fRFPmaxPt=val;}
75 void SetRFPMinEta(Double_t val) {fRFPminEta=val;}
76 void SetRFPMaxEta(Double_t val) {fRFPmaxEta=val;}
77 void SetRFPTPCSignal(Double_t val) {fRFPTPCsignal=val;}
78 void SetRFPMaxIPxy(Double_t val) {fRFPmaxIPxy=val;}
79 void SetRFPMaxIPz(Double_t val) {fRFPmaxIPz=val;}
80 void SetRFPMinTPCCls(Int_t val) {fRFPTPCncls=val;}
81 void SetRFPVZERingRange(Int_t val1, Int_t val2, Int_t val3, Int_t val4)
82 {fVZECa=val1;fVZECb=val2;fVZEAa=val3;fVZEAb=val4;}
83 void SetDauMinNClsTPC(Int_t val) {fDaughterMinNClsTPC=val;}
84 void SetDauMinXRows(Int_t val) {fDaughterMinXRows=val;}
85 void SetDauMaxChi2PerNClsTPC(Double_t val) {fDaughterMaxChi2PerNClsTPC=val;}
86 void SetDauMinXRowsOverNClsFTPC(Double_t val) {fDaughterMinXRowsOverNClsFTPC=val;}
512ced40 87 void SetDauITSLayer(Int_t layer, Int_t config) {fDaughterITSConfig[layer]=config;}
24373b38 88 void SetDauMinEta(Double_t val) {fDaughterMinEta=val;}
89 void SetDauMaxEta(Double_t val) {fDaughterMaxEta=val;}
90 void SetDauMinPt(Double_t val) {fDaughterMinPt=val;}
91 void SetDauMinImpactParameterXY(Double_t val) {fDaughterMinImpactParameterXY=val;}
92 void SetDauMaxNSigmaPID(Double_t val) {fDaughterMaxNSigmaPID=val;}
93 void SetDauUnTagProcedure(Bool_t val) {fDaughterUnTag=val;}
94
95 void SetMaxRapidity(Double_t val) {fDecayMaxRapidity=val;}
96 void SetMinEta(Double_t val) {fDecayMinEta=val;}
97 void SetMaxEta(Double_t val) {fDecayMaxEta=val;}
98 void SetMinPt(Double_t val) {fDecayMinPt=val;}
99 void SetMaxDCAdaughters(Double_t val) {fDecayMaxDCAdaughters=val;}
100 void SetMinCosinePointingAngleXY(Double_t val) {fDecayMinCosinePointingAngleXY=val;}
101 void SetMinQt(Double_t val, Bool_t val2=kTRUE) {fDecayMinQt=val; fDecayAPCutPie=val2;}
102 void SetMinRadXY(Double_t val) {fDecayMinRadXY=val;}
103 void SetMaxDecayLength(Double_t val) {fDecayMaxDecayLength=val;}
104 void SetMaxProductIPXY(Double_t val) {fDecayMaxProductIPXY=val;}
105
106 private:
107 AliAnalysisTaskFlowStrange(const AliAnalysisTaskFlowStrange& analysisTask);
108 AliAnalysisTaskFlowStrange& operator=(const AliAnalysisTaskFlowStrange& analysisTask);
109 void AddQAEvents();
110 void AddQACandidates();
111
112 void MyNotifyRun();
113 Bool_t CalibrateEvent();
114 void Publish();
115
116 void AddEventSpy();
117 Bool_t AcceptAAEvent(AliESDEvent *tESD);
118 Bool_t AcceptAAEvent(AliAODEvent *tAOD);
119 Bool_t AcceptPPEvent(AliAODEvent *tAOD);
120 Bool_t AcceptPAEvent(AliAODEvent *tAOD);
121 Int_t GetReferenceMultiplicity();
122
123 void ReadStack(TClonesArray* mcArray);
124 void ReadFromESD(AliESDEvent *tESD);
125 void ReadFromAODv0(AliAODEvent *tAOD);
126
127 void ChargeParticles(AliAODEvent *tAOD);
128
129 void ComputePsi2(AliVEvent *event);
130 void AddMakeQSpy();
131 void MakeQVZE(AliVEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
132 void MakeQTPC(AliVEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
133 void MakeQTPC(AliESDEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
134 void MakeQTPC(AliAODEvent *event,Double_t &qxa,Double_t &qya,Double_t &qwa,Double_t &qxb,Double_t &qyb,Double_t &qwb);
135 void AddTPCRFPSpy(TList *val);
136 Bool_t PassesRFPTPCCuts(AliESDtrack *myTrack, Double_t aodChi2NDF=0, Float_t aodipxy=0, Float_t aodipz=0);
137 void MakeQVectors();
138 void ResetContainers();
139
140 void MakeDHcorr();
141 void AddCandidates();
142 void ReadEventPlanesFromAOD(AliAODEvent *tAOD);
143
144 Double_t GetMCDPHI(Double_t phi);
145
146 Double_t CosThetaPointXY(AliESDv0 *me, const AliVVertex *vtx);
147 Double_t CosThetaPointXY(AliAODv0 *me, const AliVVertex *vtx);
148 Double_t DecayLengthXY(AliESDv0 *me, const AliVVertex *vtx);
149 Double_t DecayLengthXY(AliAODv0 *me, const AliVVertex *vtx);
150 Double_t DecayLength(AliESDv0 *me, const AliVVertex *vtx);
151 Double_t DecayLength(AliAODv0 *me, const AliVVertex *vtx);
152
153 void AddMCParticleSpy(TList *val);
154 void FillMCParticleSpy(TString listName, AliAODMCParticle *par);
155 void FillMCParticleSpy(TString listName, TParticle *par);
156
512ced40
RAB
157 void AddCandidatesSpy(TList *val, Bool_t fillRes=kFALSE);
158 void FillCandidateSpy(TString listName, Bool_t fillRes=kFALSE);
24373b38 159
512ced40
RAB
160 void AddTracksSpy(TList *val, Bool_t fillRes=kFALSE);
161 void FillTrackSpy(TString listName, Bool_t fillRes=kFALSE);
24373b38 162
163 void MakeFilterBits();
164 Bool_t PassesFilterBit(AliESDtrack *me);
165
166 void LoadTrack(AliESDtrack *myTrack, Double_t aodChi2NDF=0);
167 Bool_t AcceptDaughter();
168 Bool_t AcceptCandidate();
169 Bool_t PassesPIDCuts(AliESDtrack *myTrack, AliPID::EParticleType pid=AliPID::kProton);
170
171 Bool_t IsAtTPCEdge(Double_t phi,Double_t pt,Int_t charge,Double_t b);
172
173 void MakeTrack();
174 void PushBackFlowTrack(AliFlowEvent *event, Double_t pt, Double_t phi, Double_t eta, Double_t we, Int_t id);
175
176 Double_t GetWDist(const AliVVertex* v0, const AliVVertex* v1);
177 Bool_t plpMV(const AliVEvent *event);
178
179 void LoadVZEROResponse();
180 void AddVZEROResponse();
181 void SaveVZEROResponse();
182 void AddVZEQA();
183 void SaveVZEROQA();
184
185 Int_t RefMultTPC();
186 Int_t RefMultGlobal();
187
188 AliPIDResponse *fPIDResponse; //! PID response object
189 AliESDtrackCuts *fFB1; // filterbit cut equivalent
190 AliESDtrackCuts *fFB1024; // filterbit cut equivalent
191 AliFlowEvent *fTPCevent; // flow event (needed here due to ev selection)
192 AliFlowEvent *fVZEevent; // flow event (needed here due to ev selection)
193 TObjArray *fCandidates; // array of selected candidates
194 TList *fList; // stores the final list of output histograms
195
196 Int_t fRunNumber; // current run number
197
198 Int_t fDebug; // debug level
199 Int_t fQAlevel; // QA plots
200
201 Bool_t fReadESD; // move back to ESD
202 Bool_t fReadMC; // read MC files
512ced40 203 Int_t fPostMatched; // post only (un)matched particles
24373b38 204 Bool_t fAvoidExec; // avoids Exec
205 Bool_t fSkipSelection; // skip decay finder
206 Bool_t fSkipFlow; // skip flow-wise code
207 Bool_t fSkipDHcorr; // skip dhcorr code
208 Bool_t fUseFP; // flow package?
209 Bool_t fRunOnpA; // make task compatible with pA event selection
210 Bool_t fRunOnpp; // make task compatible with pp event selection
211 Bool_t fExtraEventRejection; // to reject pile up
212 TString fCentMethod; // CC
213 Int_t fCentPerMin; // CC
214 Int_t fCentPerMax; // CC
215 Double_t fThisCent; // CC
216
512ced40
RAB
217 Double_t fVertexZcut; // cut on main vertex Z
218
24373b38 219 Bool_t fExcludeTPCEdges; // exclude TPC edges from single track selection
220
221 Int_t fSpecie; // K0=>0 L0=>1
222 Bool_t fOnline; // change into online v0 finder
223 Bool_t fHomemade; // homemade v0 finder
224
225 Int_t fWhichPsi; // detector for Psi2
226
227 Bool_t fVZEsave; // make vze response
228 TList *fVZEload; // adress to calibration file
229 TH2D *fVZEResponse; // vze response vs centrality class
230 Bool_t fVZEmb; // integrate response (linearity)
231 Bool_t fVZEByDisk; // normalized by disk
232 Int_t fVZECa; // start of V0C (ring number 0-3)
233 Int_t fVZECb; // end of V0C (ring number 0-3)
234 Int_t fVZEAa; // start of V0A (ring number 0-3)
235 Int_t fVZEAb; // end of V0A (ring number 0-3)
236 TList *fVZEQA; // adress to qalist
237
238 Double_t fPsi2; // best estimation of Psi2
239 Double_t fMCEP; // stores MC EP (when available)
240
241 Int_t fMassBins; // opens
242 Double_t fMinMass; // mass
243 Double_t fMaxMass; // window
512ced40
RAB
244 Double_t fMinMassX; // HP window
245 Double_t fMaxMassX; // HP window
24373b38 246
247 Int_t fRFPFilterBit; // RFP TPC
248 Double_t fRFPminPt; // RFP TPC
249 Double_t fRFPmaxPt; // RFP TPC
250 Double_t fRFPminEta; // RFP TPC
251 Double_t fRFPmaxEta; // RFP TPC
252 Double_t fRFPTPCsignal; // RFP TPC
253 Double_t fRFPmaxIPxy; // RFP TPC
254 Double_t fRFPmaxIPz; // RFP TPC
255 Int_t fRFPTPCncls; // RFP TPC
256
257 Double_t fDecayMass; // DECAY
258 Double_t fDecayPhi; // DECAY
259 Double_t fDecayEta; // DECAY
260 Double_t fDecayPt; // DECAY
261 Double_t fDecayDCAdaughters; // DECAY
262 Double_t fDecayCosinePointingAngleXY; // DECAY
263 Double_t fDecayRadXY; // DECAY
264 Double_t fDecayDecayLength; // DECAY
265 Double_t fDecayQt; // DECAY
266 Double_t fDecayAlpha; // DECAY
267 Double_t fDecayRapidity; // DECAY
268 Double_t fDecayProductIPXY; // DECAY
512ced40
RAB
269 Double_t fDecayIPneg; // DECAY
270 Double_t fDecayIPpos; // DECAY
271 Double_t fDecayXneg; // DECAY
272 Double_t fDecayXpos; // DECAY
24373b38 273 Int_t fDecayIDneg; // DECAY
274 Int_t fDecayIDpos; // DECAY
275 Int_t fDecayID; // DECAY
276
512ced40
RAB
277 Double_t fDecayMatchOrigin; // MC DECAY
278 Double_t fDecayMatchPhi; // MC DECAY
279 Double_t fDecayMatchEta; // MC DECAY
280 Double_t fDecayMatchPt; // MC DECAY
281 Double_t fDecayMatchRadXY; // MC DECAY
282
24373b38 283 Double_t fDecayMinEta; // DECAY CUTS
284 Double_t fDecayMaxEta; // DECAY CUTS
285 Double_t fDecayMinPt; // DECAY CUTS
286 Double_t fDecayMaxDCAdaughters; // DECAY CUTS
287 Double_t fDecayMinCosinePointingAngleXY; // DECAY CUTS
288 Double_t fDecayMinQt; // DECAY CUTS
289 Bool_t fDecayAPCutPie; // DECAY CUTS
290 Double_t fDecayMinRadXY; // DECAY CUTS
291 Double_t fDecayMaxDecayLength; // DECAY CUTS
292 Double_t fDecayMaxProductIPXY; // DECAY CUTS
293 Double_t fDecayMaxRapidity; // DECAY CUTS
294
295 Double_t fDaughterPhi; // DAUGHTER
296 Double_t fDaughterEta; // DAUGHTER
297 Double_t fDaughterPt; // DAUGHTER
298 Int_t fDaughterNClsTPC; // DAUGHTER
512ced40 299 Int_t fDaughterITSConfig[6]; // DAUGHTER
24373b38 300 Int_t fDaughterCharge; // DAUGHTER
301 Int_t fDaughterNFClsTPC; // DAUGHTER
302 Int_t fDaughterNSClsTPC; // DAUGHTER
303 Double_t fDaughterChi2PerNClsTPC; // DAUGHTER
304 Double_t fDaughterXRows; // DAUGHTER
305 Float_t fDaughterImpactParameterXY; // DAUGHTER
306 Float_t fDaughterImpactParameterZ; // DAUGHTER
307 UInt_t fDaughterStatus; // DAUGHTER
512ced40 308 UChar_t fDaughterITScm; // DAUGHTER
24373b38 309 Double_t fDaughterNSigmaPID; // DAUGHTER
310 Int_t fDaughterKinkIndex; // DAUGHTER
311
512ced40
RAB
312 Double_t fDaughterMatchPhi; // MC DAUGHTER
313 Double_t fDaughterMatchEta; // MC DAUGHTER
314 Double_t fDaughterMatchPt; // MC DAUGHTER
315 Float_t fDaughterMatchImpactParameterXY; // MC DAUGHTER
316 Float_t fDaughterMatchImpactParameterZ; // MC DAUGHTER
317
24373b38 318 Bool_t fDaughterUnTag; // UNTAG PROCEDURE
319
320 Double_t fDaughterMinEta; // DAUGHTER CUTS
321 Double_t fDaughterMaxEta; // DAUGHTER CUTS
322 Double_t fDaughterMinPt; // DAUGHTER CUTS
323 Int_t fDaughterMinNClsTPC; // DAUGHTER CUTS
324 Int_t fDaughterMinXRows; // DAUGHTER CUTS
325 Double_t fDaughterMaxChi2PerNClsTPC; // DAUGHTER CUTS
326 Double_t fDaughterMinXRowsOverNClsFTPC; // DAUGHTER CUTS
327 Double_t fDaughterMinImpactParameterXY; // DAUGHTER CUTS
328 Double_t fDaughterMaxNSigmaPID; // DAUGHTER CUTS
329
330 ClassDef(AliAnalysisTaskFlowStrange, 5);
331};
332#endif