]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/Chaoticity/AliFourPion.h
set RefPMT=2 for LHC10b re-rconstruction
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / Chaoticity / AliFourPion.h
CommitLineData
be9ef9f9 1#ifndef AliFourPion_cxx
2#define AliFourPion_cxx
3//
4// Class AliFourPion
5//
6// AliFourPion
7// author:
8// Dhevan Gangadharan (dhevan.raja.gangadharan@cern.ch)
9//
10
11
12
13class TH1F;
14class TH3F;
15class TH1D;
16class TH2D;
17class TH3D;
18
19class TProfile;
20class TProfile2D;
21class TRandom3;
22
23class AliESDEvent;
24class AliAODEvent;
25class AliESDtrackCuts;
26class AliESDpid;
27
28#include "AliAnalysisTask.h"
29#include "AliAnalysisTaskSE.h"
30#include "AliESDpid.h"
31#include "AliAODPid.h"
32#include "AliFourPionEventCollection.h"
33#include "AliCentrality.h"
34
35class AliFourPion : public AliAnalysisTaskSE {
36 public:
37
38 AliFourPion();
39 AliFourPion(const Char_t *name);
40 virtual ~AliFourPion();
41 AliFourPion(const AliFourPion &obj);
42 AliFourPion &operator=(const AliFourPion &obj);
43
44
45 virtual void UserCreateOutputObjects();
46 virtual void UserExec(Option_t *option);
47 virtual void Terminate(Option_t *);
48
49 enum {
50 kPairLimit = 10000,//10000
51 kNormPairLimit = 45000,
52 kMultLimitPbPb = 1800,//1800
53 kMultLimitpp = 300,
54 kMultBinspp = 11,
55 kMCarrayLimit = 150000,// 110000
56 kQbinsWeights = 40,
57 kNDampValues = 16,
58 kRmin = 5,// EW min radii 5 fm
9c0557fb 59 kDENtypes = 104,// was 44
be9ef9f9 60 };
61
62 static const Int_t fKbinsT = 4;// Set fKstep as well !!!!
63 static const Int_t fKbinsY = 1;// Set fKstep as well !!!!
64 static const Int_t fEDbins = 2;
65 static const Int_t fCentBins = 10;// 0-50%
66 static const Int_t fRVALUES = 7;// 7 EW radii (5-11) , was 8 Gaussian radii (3-10fm)
67
68
69 Int_t GetNumKtBins() const {return AliFourPion::fKbinsT;}
70 Int_t GetNumRValues() const {return AliFourPion::fRVALUES;}
71 Int_t GetNumCentBins() const {return AliFourPion::fCentBins;}
72 Int_t GetNumEDBins() const {return AliFourPion::fEDbins;}
73 void SetWeightArrays(Bool_t legoCase=kTRUE, TH3F *histos[AliFourPion::fKbinsT][AliFourPion::fCentBins]=0x0);
80507acf 74 void SetMomResCorrections(Bool_t legoCase=kTRUE, TH2D *temp2DSC=0x0, TH2D *temp2DMC=0x0);
be9ef9f9 75 void SetFSICorrelations(Bool_t legoCase=kTRUE, TH1D *tempss[12]=0x0, TH1D *tempos[12]=0x0);
5591748e 76 void SetMuonCorrections(Bool_t legoCase=kTRUE, TH2D *tempMuon=0x0);
be9ef9f9 77 //
78 void SetMCdecision(Bool_t mc) {fMCcase = mc;}
79 void SetTabulatePairs(Bool_t tabulate) {fTabulatePairs = tabulate;}
95567836 80 void SetInterpolationType(Bool_t linearInterp) {fLinearInterpolation = linearInterp;}
be9ef9f9 81 void SetPbPbCase(Bool_t pbpb) {fPbPbcase = pbpb;}
82 void SetGenerateSignal(Bool_t gen) {fGenerateSignal = gen;}
83 void SetGeneratorOnly(Bool_t genOnly) {fGeneratorOnly = genOnly;}
84 void SetCentBinRange(Int_t low, Int_t high) {fCentBinLowLimit = low; fCentBinHighLimit = high;}
85 void SetLEGOCase(Bool_t lego) {fLEGO = lego;}
86 void SetFilterBit(UInt_t filterbit) {fFilterBit = filterbit;}
87 void SetMaxChi2NDF(Float_t MaxChi2NDF) {fMaxChi2NDF = MaxChi2NDF;}
88 void SetMinTPCncls(Int_t MinTPCncls) {fMinTPCncls = MinTPCncls;}
89 void SetPairSeparationCutEta(Float_t pairsep) {fMinSepPairEta = pairsep;}
90 void SetPairSeparationCutPhi(Float_t pairsep) {fMinSepPairPhi = pairsep;}
91 void SetNsigmaTPC(Float_t nsig) {fSigmaCutTPC = nsig;}
92 void SetNsigmaTOF(Float_t nsig) {fSigmaCutTOF = nsig;}
93 void SetRMax(Int_t rbin) {fRMax = rbin;}
94 void SetfcSq(Float_t fcSq) {ffcSq = fcSq;}
95 //
96
97
98 private:
99
100 void ParInit();
101 Bool_t AcceptPair(AliFourPionTrackStruct, AliFourPionTrackStruct);
fac2d84b 102 Bool_t AcceptPairPM(AliFourPionTrackStruct, AliFourPionTrackStruct);
fcb16ac9 103 Float_t Gamov(Int_t, Int_t, Float_t);
be9ef9f9 104 void Shuffle(Int_t*, Int_t, Int_t);
105 Float_t GetQinv(Float_t[], Float_t[]);
106 void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&);
107 void GetWeight(Float_t[], Float_t[], Float_t&, Float_t&);
108 Float_t FSICorrelation(Int_t, Int_t, Float_t);
109 Float_t MCWeight(Int_t[2], Float_t, Float_t, Float_t, Float_t);
110 Float_t MCWeightOSL(Int_t, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, Float_t);
111 Float_t MCWeight3(Int_t, Float_t, Float_t, Int_t[3], Float_t[3], Float_t[3]);
112 Float_t MCWeightFSI3(Int_t, Float_t, Float_t, Int_t[3], Float_t[3]);
113 Float_t MCWeight4(Int_t, Float_t, Float_t, Int_t[4], Float_t[6], Float_t[6]);
114 Float_t MCWeightFSI4(Int_t, Float_t, Float_t, Int_t[4], Float_t[6]);
115 //
116 void SetFillBins2(Int_t, Int_t, Int_t&, Int_t&);
117 void SetFillBins3(Int_t, Int_t, Int_t, Short_t, Int_t&, Int_t&, Int_t&, Bool_t&, Bool_t&, Bool_t&);
6bb6954b 118 void SetFillBins4(Int_t, Int_t, Int_t, Int_t, Int_t&, Int_t&, Int_t&, Int_t&, Int_t, Bool_t[13]);
be9ef9f9 119 void SetFSIindex(Float_t);
120 //
95567836 121 Float_t cubicInterpolate(Float_t[4], Float_t);
122 Float_t nCubicInterpolate(Int_t, Float_t*, Float_t[]);
be9ef9f9 123
124 const char* fname;// name of class
125 AliAODEvent *fAOD; //! // AOD object
126 TList *fOutputList; //! Compact Output list
127 AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil
128
129
130 AliFourPionEventCollection ***fEC; //!
131 AliFourPionEventStruct *fEvt; //!
132 AliFourPionTrackStruct *fTempStruct; //!
133 TRandom3* fRandomNumber; //!
134
135
136
137 //////////////////////////////
138 // histogram structures
139
140
141 struct St6 {
142 TH1D *fNorm3; //!
143 TH1D *fTerms3; //!
144 TProfile *fKfactor; //!
80507acf 145 TProfile *fKfactorWeighted; //!
be9ef9f9 146 TProfile *fMeanQinv; //!
147 TH2D *fIdeal; //!
148 TH2D *fSmeared; //!
149 //
5591748e 150 TH3D *fMuonSmeared; //!
151 TH3D *fMuonIdeal; //!
152 TH3D *fMuonPionK3; //!
153 TH3D *fPionPionK3; //!
154 //
be9ef9f9 155 TH2D *fTwoPartNorm; //!
6432c081 156 TH2D *fTwoPartNegNorm; //!
43046300 157 TH2D *fTwoPartNormErr; //!
be9ef9f9 158 };
159 struct St7 {
160 TH3D *fTerms2OSL; //!
161 TH3D *fTerms2OSLQW; //!
162 };
163 struct St5 {
164 TH2D *fTerms2; //!
165 TH2D *fTerms2QW; //!
166 TH3D *fTerms2ThreeD; //!
167 TProfile2D *fAvgP; //!
168 TH2D *fIdeal; //!
169 TH2D *fSmeared; //!
170 TH2D *fUnitMultBin; //!
171 //
172 TH2D *fMuonSmeared; //!
173 TH2D *fMuonIdeal; //!
174 TH2D *fMuonPionK2; //!
175 TH2D *fPionPionK2; //!
176 TH1D *fMCqinv; //!
177 TH1D *fMCqinvQW; //!
178 TH2D *fPIDpurityDen; //!
179 TH3D *fPIDpurityNum; //!
180 struct St7 OSL_ktbin[2];
181 };
182 struct StFourPT {
183 TH1D *fNorm4; //!
184 TH1D *fTerms4; //!
185 TProfile *fKfactor; //!
80507acf 186 TProfile *fKfactorWeighted; //!
be9ef9f9 187 TH2D *fIdeal; //!
188 TH2D *fSmeared; //!
189 //
5591748e 190 TH3D *fMuonSmeared; //!
191 TH3D *fMuonIdeal; //!
192 TH3D *fMuonPionK4; //!
193 TH3D *fPionPionK4; //!
194 //
be9ef9f9 195 TH2D *fTwoPartNorm; //!
6432c081 196 TH2D *fTwoPartNegNorm; //!
43046300 197 TH2D *fTwoPartNormErr; //!
be9ef9f9 198 };
199 struct St_EDB {
200 struct St5 TwoPT[2];
201 struct St6 ThreePT[5];
6bb6954b 202 struct StFourPT FourPT[13];
be9ef9f9 203 };
204 struct St_M {
205 struct St_EDB EDB[fEDbins];
206 };
207 struct St4 {
208 struct St_M MB[fCentBins];
209 };
210 struct St3 {
211 struct St4 Charge4[2];
212 struct St_M MB[fCentBins];
213 };
214 struct St2 {
215 struct St3 Charge3[2];
216 struct St_M MB[fCentBins];
217 };
218 struct St1 {
219 struct St2 Charge2[2];
220 };
221 struct St1 Charge1[2];//!
222
223
224 /////////////////////
225 // 4D r3 denominator
226 struct St_Ky {
227 struct St_M MB[fCentBins];
228 };
229 struct St_Kt {
230 struct St_Ky KY[fKbinsY];
231 };
232 struct St_Kt KT[fKbinsT];//!
233
234
235 Bool_t fLEGO;
236 Bool_t fMCcase;
237 Bool_t fAODcase;
238 Bool_t fPbPbcase;
239 Bool_t fGenerateSignal;
240 Bool_t fGeneratorOnly;
be9ef9f9 241 Bool_t fTabulatePairs;
95567836 242 Bool_t fLinearInterpolation;
be9ef9f9 243 Int_t fRMax;
244 Float_t ffcSq;
80507acf 245 Float_t ffcSqMRC;
be9ef9f9 246 UInt_t fFilterBit;
247 Float_t fMaxChi2NDF;
248 Int_t fMinTPCncls;
249 Double_t fBfield;
250 Int_t fMbin;
251 Int_t fFSIindex;
252 Int_t fEDbin;
253 Int_t fMbins;
254 Int_t fMultLimit;
255 Int_t fCentBinLowLimit;
256 Int_t fCentBinHighLimit;
257 Int_t fEventCounter;
258 Int_t fEventsToMix;
259 Int_t fZvertexBins;
260 Int_t fMultLimits[kMultBinspp+1];
261 Float_t fQcut;
262 Float_t fQLowerCut;
263 Float_t fNormQcutLow;
264 Float_t fNormQcutHigh;
265 Float_t fKupperBound;
266 Float_t fQupperBoundQ2;
267 Float_t fQupperBoundQ3;
268 Float_t fQupperBoundQ4;
269 Float_t fQbinsQ2;
270 Float_t fQbinsQ3;
271 Float_t fQbinsQ4;
272 Float_t fQupperBoundWeights;
273 Float_t fKstepT[fKbinsT];
274 Float_t fKstepY[fKbinsY];
275 Float_t fKmeanT[fKbinsT];
276 Float_t fKmeanY[fKbinsY];
277 Float_t fKmiddleT[fKbinsT];
278 Float_t fKmiddleY[fKbinsY];
279 Float_t fQstep;
280 Float_t fQstepWeights;
281 Float_t fQmean[kQbinsWeights];
282 Float_t fDampStart;
283 Float_t fDampStep;
284
285 Float_t fTPCTOFboundry;
286 Float_t fTOFboundry;
287 Float_t fSigmaCutTPC;
288 Float_t fSigmaCutTOF;
289
290 Float_t fMinSepPairEta;
291 Float_t fMinSepPairPhi;
292 Float_t fShareQuality;
293 Float_t fShareFraction;
294
295 Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;
296
297 Int_t fKtIndexL,fKtIndexH;
298 //
299 Int_t fQoIndexL,fQoIndexH;
300 Int_t fQsIndexL,fQsIndexH;
301 Int_t fQlIndexL,fQlIndexH;
302
303 Bool_t fDummyB;
304
305 Float_t fKT3transition;
306 Float_t fKT4transition;
307
95567836 308 Float_t farrP1[4][4][4];
309 Float_t farrP2[4][4][4];
b71263d0 310
311 /* bool LowQPairSwitch_E0E0[kMultLimitPbPb][kMultLimitPbPb];//!
be9ef9f9 312 bool LowQPairSwitch_E0E1[kMultLimitPbPb][kMultLimitPbPb];//!
313 bool LowQPairSwitch_E0E2[kMultLimitPbPb][kMultLimitPbPb];//!
314 bool LowQPairSwitch_E0E3[kMultLimitPbPb][kMultLimitPbPb];//!
315 bool LowQPairSwitch_E1E2[kMultLimitPbPb][kMultLimitPbPb];//!
316 bool LowQPairSwitch_E1E3[kMultLimitPbPb][kMultLimitPbPb];//!
317 bool LowQPairSwitch_E2E3[kMultLimitPbPb][kMultLimitPbPb];//!
318 //
319 bool NormQPairSwitch_E0E0[kMultLimitPbPb][kMultLimitPbPb];//!
320 bool NormQPairSwitch_E0E1[kMultLimitPbPb][kMultLimitPbPb];//!
321 bool NormQPairSwitch_E0E2[kMultLimitPbPb][kMultLimitPbPb];//!
322 bool NormQPairSwitch_E0E3[kMultLimitPbPb][kMultLimitPbPb];//!
323 bool NormQPairSwitch_E1E2[kMultLimitPbPb][kMultLimitPbPb];//!
324 bool NormQPairSwitch_E1E3[kMultLimitPbPb][kMultLimitPbPb];//!
325 bool NormQPairSwitch_E2E3[kMultLimitPbPb][kMultLimitPbPb];//!
b71263d0 326 */
327 //
328 Char_t fDefaultsCharSwitch[kMultLimitPbPb];//!
329 TArrayC *fLowQPairSwitch_E0E0[kMultLimitPbPb];//!
330 TArrayC *fLowQPairSwitch_E0E1[kMultLimitPbPb];//!
331 TArrayC *fLowQPairSwitch_E0E2[kMultLimitPbPb];//!
332 TArrayC *fLowQPairSwitch_E0E3[kMultLimitPbPb];//!
6bb6954b 333 TArrayC *fLowQPairSwitch_E1E1[kMultLimitPbPb];//!
b71263d0 334 TArrayC *fLowQPairSwitch_E1E2[kMultLimitPbPb];//!
335 TArrayC *fLowQPairSwitch_E1E3[kMultLimitPbPb];//!
336 TArrayC *fLowQPairSwitch_E2E3[kMultLimitPbPb];//!
337 //
338 TArrayC *fNormQPairSwitch_E0E0[kMultLimitPbPb];//!
339 TArrayC *fNormQPairSwitch_E0E1[kMultLimitPbPb];//!
340 TArrayC *fNormQPairSwitch_E0E2[kMultLimitPbPb];//!
341 TArrayC *fNormQPairSwitch_E0E3[kMultLimitPbPb];//!
6bb6954b 342 TArrayC *fNormQPairSwitch_E1E1[kMultLimitPbPb];//!
b71263d0 343 TArrayC *fNormQPairSwitch_E1E2[kMultLimitPbPb];//!
344 TArrayC *fNormQPairSwitch_E1E3[kMultLimitPbPb];//!
345 TArrayC *fNormQPairSwitch_E2E3[kMultLimitPbPb];//!
346
be9ef9f9 347
348 public:
80507acf 349 TH2D *fMomResC2SC;
350 TH2D *fMomResC2MC;
5591748e 351 TH2D *fWeightmuonCorrection;
be9ef9f9 352 TH1D *fFSIss[12];
353 TH1D *fFSIos[12];
354 TH3F *fNormWeight[fKbinsT][fCentBins];
5591748e 355
be9ef9f9 356
357 ClassDef(AliFourPion, 1);
358};
359
360#endif