]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/BalanceFunctions/AliAnalysisTaskTriggeredBF.h
Adding the track-by-track correction for both the trigger and the associated particle...
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliAnalysisTaskTriggeredBF.h
CommitLineData
f8b2d882 1#ifndef ALIANALYSISTASKTRIGGEREDBF_CXX\r
2#define ALIANALYSISTASKTRIGGEREDBF_CXX\r
3\r
4// Analysis task for the TriggeredBF code\r
5// Authors: Panos Cristakoglou@cern.ch, m.weber@cern.ch\r
6\r
845fdeca 7#include "AliLog.h"\r
8#include "AliAnalysisTaskSE.h"\r
9#include "AliBalanceTriggered.h"\r
84164254 10#include "AliPIDResponse.h"\r
11#include "AliPIDCombined.h"\r
845fdeca 12\r
f8b2d882 13class TList;\r
14class TH1F;\r
15class TH2F;\r
f8b2d882 16\r
17class AliBalanceTriggered;\r
85379419 18class AliEventPoolManager;\r
f8b2d882 19\r
f8b2d882 20\r
21class AliAnalysisTaskTriggeredBF : public AliAnalysisTaskSE {\r
22 public:\r
23 AliAnalysisTaskTriggeredBF(const char *name = "AliAnalysisTaskTriggeredBF");\r
24 virtual ~AliAnalysisTaskTriggeredBF(); \r
25 \r
26 \r
27 virtual void UserCreateOutputObjects();\r
28 virtual void UserExec(Option_t *option);\r
29 virtual void UserExecMix(Option_t*);\r
30 virtual void FinishTaskOutput();\r
31 virtual void Terminate(Option_t *);\r
32\r
33 void SetAnalysisObject(AliBalanceTriggered *const analysis) {\r
34 fBalance = analysis;\r
35 }\r
36 void SetShufflingObject(AliBalanceTriggered *const analysisShuffled) {\r
37 fRunShuffling = kTRUE;\r
38 fShuffledBalance = analysisShuffled;\r
39 }\r
845fdeca 40 void SetMixingObject(AliBalanceTriggered *const analysisMixed) {\r
41 fRunMixing = kTRUE;\r
42 fMixedBalance = analysisMixed;\r
43 }\r
85379419 44 void SetMixingTracks(Int_t tracks) { fMixingTracks = tracks; }\r
45\r
84164254 46 void SetRunV0(Bool_t runV0 = kTRUE) { fRunV0 = runV0; }\r
f8b2d882 47 \r
48 void SetVertexDiamond(Double_t vx, Double_t vy, Double_t vz) {\r
49 fVxMax = vx;\r
50 fVyMax = vy;\r
51 fVzMax = vz;\r
52 }\r
53\r
54 //==============AOD analysis==============//\r
55 void SetAODtrackCutBit(Int_t bit){\r
56 nAODtrackCutBit = bit;\r
57 }\r
58\r
59 void SetKinematicsCutsAOD(Double_t ptmin, Double_t ptmax, Double_t etamin, Double_t etamax){\r
9fd4b54e 60 fPtMin = ptmin; fPtMax = ptmax;\r
61 fEtaMin = etamin; fEtaMax = etamax;\r
f8b2d882 62\r
63 }\r
64\r
65 void SetExtraDCACutsAOD(Double_t DCAxy, Double_t DCAz){\r
66 fDCAxyCut = DCAxy;\r
67 fDCAzCut = DCAz;\r
68 }\r
69\r
70 void SetExtraTPCCutsAOD(Double_t maxTPCchi2, Int_t minNClustersTPC){\r
71 fTPCchi2Cut = maxTPCchi2;\r
72 fNClustersTPCCut = minNClustersTPC;\r
73 }\r
74\r
75 //Centrality\r
76 void SetCentralityEstimator(const char* centralityEstimator) {fCentralityEstimator = centralityEstimator;}\r
9fd4b54e 77 const char* GetCentralityEstimator(void) const {return fCentralityEstimator;}\r
f8b2d882 78 void SetCentralityPercentileRange(Double_t min, Double_t max) { \r
79 fUseCentrality = kTRUE;\r
80 fCentralityPercentileMin=min;\r
81 fCentralityPercentileMax=max;\r
82 }\r
83 void SetImpactParameterRange(Double_t min, Double_t max) { \r
84 fUseCentrality = kTRUE;\r
85 fImpactParameterMin=min;\r
86 fImpactParameterMax=max;\r
87 }\r
88\r
89 //multiplicity\r
90 void SetMultiplicityRange(Int_t min, Int_t max) {\r
91 fUseMultiplicity = kTRUE;\r
92 fNumberOfAcceptedTracksMin = min;\r
93 fNumberOfAcceptedTracksMax = max;}\r
94 \r
95 void UseOfflineTrigger() {fUseOfflineTrigger = kTRUE;}\r
96 \r
97\r
98 private:\r
845fdeca 99 Float_t IsEventAccepted(AliVEvent* event);\r
100 TObjArray* GetAcceptedTracks(AliVEvent* event);\r
84164254 101 TObjArray* GetAcceptedV0s(AliVEvent* event);\r
845fdeca 102 TObjArray* GetShuffledTracks(TObjArray* tracks);\r
103\r
f8b2d882 104 AliBalanceTriggered *fBalance; //TriggeredBF object\r
105 Bool_t fRunShuffling;//run shuffling or not\r
106 AliBalanceTriggered *fShuffledBalance; //TriggeredBF object (shuffled)\r
845fdeca 107 Bool_t fRunMixing;//run mixing or not\r
9fd4b54e 108 Int_t fMixingTracks;//number of tracks to mix\r
845fdeca 109 AliBalanceTriggered *fMixedBalance; //TriggeredBF object (mixed)\r
85379419 110 AliEventPoolManager* fPoolMgr; //! event pool manager\r
84164254 111 Bool_t fRunV0;\r
112\r
113 AliPIDResponse *fPIDResponse; //! PID response object\r
114 AliPIDCombined *fPIDCombined; //! combined PID object\r
85379419 115\r
f8b2d882 116 TList *fList; //fList object\r
117 TList *fListTriggeredBF; //fList object\r
845fdeca 118 TList *fListTriggeredBFS; //fList object (shuffling)\r
119 TList *fListTriggeredBFM; //fList object (mixing)\r
f8b2d882 120 TList *fHistListPIDQA; //! list of histograms\r
84164254 121 TList *fHistListV0; // list of V0 histograms\r
f8b2d882 122\r
123 TH1F *fHistEventStats; //event stats\r
124 TH2F *fHistCentStats; //centrality stats\r
125 TH1F *fHistTriggerStats; //trigger stats\r
126 TH1F *fHistTrackStats; //Track filter bit stats\r
127 TH1F *fHistVx; //x coordinate of the primary vertex\r
128 TH1F *fHistVy; //y coordinate of the primary vertex\r
129 TH1F *fHistVz; //z coordinate of the primary vertex\r
130\r
9fd4b54e 131 TH2F *fHistClus;//number of clusters (QA histogram)\r
132 TH2F *fHistDCA;//DCA (QA histogram)\r
133 TH1F *fHistChi2;//track chi2 (QA histogram)\r
134 TH1F *fHistPt;//transverse momentum (QA histogram)\r
135 TH1F *fHistEta;//pseudorapidity (QA histogram)\r
136 TH1F *fHistPhi;//phi (QA histogram)\r
137 TH1F *fHistPhiBefore;//phi before v2 afterburner (QA histogram)\r
138 TH1F *fHistPhiAfter;//phi after v2 afterburner (QA histogram)\r
139 TH2F *fHistV0M;//V0 multiplicities (QA histogram)\r
140 TH2F *fHistRefTracks;//reference track multiplicities (QA histogram)\r
f8b2d882 141\r
84164254 142 // V0 histograms\r
143 TH1F *fHistV0MultiplicityBeforeTrigSel; //! V0 multiplicity distribution\r
144 TH1F *fHistV0MultiplicityForTrigEvt; //! V0 multiplicity distribution\r
145 TH1F *fHistV0MultiplicityForSelEvt; //! V0 multiplicity distribution\r
146 TH1F *fHistV0MultiplicityForSelEvtNoTPCOnly; //! V0 multiplicity distribution\r
147 TH1F *fHistV0MultiplicityForSelEvtNoTPCOnlyNoPileup;//! V0 multiplicity distribution\r
148 \r
149 TH1F *fHistMultiplicityBeforeTrigSel; //! multiplicity distribution \r
9fd4b54e 150 TH1F *fHistMultiplicityForTrigEvt; //! multiplicity distribution\r
151 TH1F *fHistMultiplicity; //! multiplicity distribution\r
152 TH1F *fHistMultiplicityNoTPCOnly; //! multiplicity distribution\r
153 TH1F *fHistMultiplicityNoTPCOnlyNoPileup; //! multiplicity distribution\r
84164254 154\r
155 //before selection\r
156 TH1F* fHistV0InvMassK0; // Invariant mass K0\r
157 TH1F* fHistV0InvMassLambda; // Invariant mass Lambda\r
158 TH1F* fHistV0InvMassAntiLambda; // Invariant mass AntiLambda\r
159 TH2F* fHistV0Armenteros; // Armenteros plot\r
160\r
161 //after selection\r
162 TH1F* fHistV0SelInvMassK0; // Invariant mass K0\r
163 TH1F* fHistV0SelInvMassLambda; // Invariant mass Lambda\r
164 TH1F* fHistV0SelInvMassAntiLambda; // Invariant mass AntiLambda\r
165 TH2F* fHistV0SelArmenteros; // Armenteros plot\r
f8b2d882 166 \r
167 TString fCentralityEstimator; //"V0M","TRK","TKL","ZDC","FMD"\r
168 Bool_t fUseCentrality;//use the centrality (PbPb) or not (pp)\r
169 Double_t fCentralityPercentileMin;//centrality percentile min\r
170 Double_t fCentralityPercentileMax;//centrality percentile max\r
171 Double_t fImpactParameterMin;//impact parameter min (used for MC)\r
172 Double_t fImpactParameterMax;//impact parameter max (used for MC)\r
173\r
174 Bool_t fUseMultiplicity;//use the multiplicity cuts\r
175 Int_t fNumberOfAcceptedTracksMin;//min. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
176 Int_t fNumberOfAcceptedTracksMax;//max. number of number of accepted tracks (used for the multiplicity dependence study - pp)\r
177 TH1F *fHistNumberOfAcceptedTracks;//hisot to store the number of accepted tracks\r
178\r
179 Bool_t fUseOfflineTrigger;//Usage of the offline trigger selection\r
180\r
181 Double_t fVxMax;//vxmax\r
182 Double_t fVyMax;//vymax\r
183 Double_t fVzMax;//vzmax\r
184\r
185 Int_t nAODtrackCutBit;//track cut bit from track selection (only used for AODs)\r
186\r
187 Double_t fPtMin;//only used for AODs\r
188 Double_t fPtMax;//only used for AODs\r
189 Double_t fEtaMin;//only used for AODs\r
190 Double_t fEtaMax;//only used for AODs\r
191\r
192 Double_t fDCAxyCut;//only used for AODs\r
193 Double_t fDCAzCut;//only used for AODs\r
194\r
195 Double_t fTPCchi2Cut;//only used for AODs\r
196 Int_t fNClustersTPCCut;//only used for AODs\r
197\r
198 \r
199 AliAnalysisTaskTriggeredBF(const AliAnalysisTaskTriggeredBF&); // not implemented\r
200 AliAnalysisTaskTriggeredBF& operator=(const AliAnalysisTaskTriggeredBF&); // not implemented\r
201 \r
202 ClassDef(AliAnalysisTaskTriggeredBF, 1); // example of analysis\r
203};\r
204\r
845fdeca 205// class used for io with AliBalance (taken from AliAnalysisTaskPhiCorrelations)\r
206class AliBFBasicParticle : public AliVParticle\r
207{ \r
208 public:\r
35aff0f3 209 AliBFBasicParticle(Float_t eta, Float_t phi, Float_t pt, Short_t charge, Double_t correction)\r
210 : fEta(eta), fPhi(phi), fpT(pt), fCharge(charge), fCorrection(correction)\r
845fdeca 211 {\r
212 }\r
213 ~AliBFBasicParticle() {}\r
214 \r
215 // kinematics\r
216 virtual Double_t Px() const { AliFatal("Not implemented"); return 0; }\r
217 virtual Double_t Py() const { AliFatal("Not implemented"); return 0; }\r
218 virtual Double_t Pz() const { AliFatal("Not implemented"); return 0; }\r
219 virtual Double_t Pt() const { return fpT; }\r
220 virtual Double_t P() const { AliFatal("Not implemented"); return 0; }\r
221 virtual Bool_t PxPyPz(Double_t[3]) const { AliFatal("Not implemented"); return 0; }\r
222\r
223 virtual Double_t Xv() const { AliFatal("Not implemented"); return 0; }\r
224 virtual Double_t Yv() const { AliFatal("Not implemented"); return 0; }\r
225 virtual Double_t Zv() const { AliFatal("Not implemented"); return 0; }\r
226 virtual Bool_t XvYvZv(Double_t[3]) const { AliFatal("Not implemented"); return 0; }\r
227\r
228 virtual Double_t OneOverPt() const { AliFatal("Not implemented"); return 0; }\r
229 virtual Double_t Phi() const { return fPhi; }\r
230 virtual Double_t Theta() const { AliFatal("Not implemented"); return 0; }\r
231\r
232\r
233 virtual Double_t E() const { AliFatal("Not implemented"); return 0; }\r
234 virtual Double_t M() const { AliFatal("Not implemented"); return 0; }\r
235 \r
236 virtual Double_t Eta() const { return fEta; }\r
237 virtual Double_t Y() const { AliFatal("Not implemented"); return 0; }\r
238 \r
239 virtual Short_t Charge() const { return fCharge; }\r
845fdeca 240 virtual Int_t GetLabel() const { AliFatal("Not implemented"); return 0; }\r
35aff0f3 241\r
242 virtual Double_t Correction() const { return fCorrection; } //=============================correction\r
243 \r
845fdeca 244 // PID\r
245 virtual Int_t PdgCode() const { AliFatal("Not implemented"); return 0; } \r
246 virtual const Double_t *PID() const { AliFatal("Not implemented"); return 0; }\r
247 \r
248 private:\r
249 Float_t fEta; // eta\r
250 Float_t fPhi; // phi\r
251 Float_t fpT; // pT\r
252 Short_t fCharge; // charge\r
35aff0f3 253 Double_t fCorrection; //============================correction\r
254\r
845fdeca 255 ClassDef( AliBFBasicParticle, 1); // class which contains only quantities requires for this analysis to reduce memory consumption for event mixing\r
256};\r
257\r
f8b2d882 258#endif\r