]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/Chaoticity/AliChaoticity.h
Comment out 4-vector product terms. Remove 2nd dimension of fFSI2SS-OS. Clean-up...
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / Chaoticity / AliChaoticity.h
CommitLineData
cd12341d 1#ifndef AliChaoticity_cxx
2#define AliChaoticity_cxx
3//
4// Class AliChaoticity
5//
6// AliChaoticity
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 "AliChaoticityEventCollection.h"
33#include "AliCentrality.h"
34
35class AliChaoticity : public AliAnalysisTaskSE {
36 public:
37
38 AliChaoticity();
654866df 39 AliChaoticity(const Char_t *name);
cd12341d 40 virtual ~AliChaoticity();
41 AliChaoticity(const AliChaoticity &obj);
42 AliChaoticity &operator=(const AliChaoticity &obj);
43
cd12341d 44
45 virtual void UserCreateOutputObjects();
46 virtual void Exec(Option_t *option);
47 virtual void Terminate(Option_t *);
c4980714 48
92d03b2c 49 enum {
cd12341d 50 kPairLimit = 15000,//15000
51 kNormPairLimit = 45000,
52 kMultLimitPbPb = 2000,//2000
53 kMultLimitpp = 300,
54 kMultBinspp = 11,//20 or 11
6e805184 55 kMCarrayLimit = 110000,
cd12341d 56 kQbins = 20,
57 kQbinsWeights = 40,
fa109294 58 kNDampValues = 16,
05db4376 59 kRmin = 5,// EW min radii 5 fm
fa109294 60 kDENtypes = 1,// was (kRVALUES)*kNDampValues
cd12341d 61 kSCLimit2 = 1,// 1, 6
654866df 62 kSCLimit3 = 1// 1, 10
63 };
cd12341d 64
54dbdf06 65 static const Int_t fKbinsT = 4;// Set fKstep as well !!!!
654866df 66 static const Int_t fKbinsY = 1;// Set fKstep as well !!!!
baba9c2d 67 static const Int_t fEDbins = 1;
654866df 68 static const Int_t fCentBins = 10;// 0-50%
05db4376 69 static const Int_t fRVALUES = 7;// 7 EW radii (5-11) , was 8 Gaussian radii (3-10fm)
654866df 70
71
72 Int_t GetNumKtBins() const {return AliChaoticity::fKbinsT;}
73 Int_t GetNumRValues() const {return AliChaoticity::fRVALUES;}
74 Int_t GetNumCentBins() const {return AliChaoticity::fCentBins;}
140107fb 75 Int_t GetNumEDBins() const {return AliChaoticity::fEDbins;}
654866df 76 void SetWeightArrays(Bool_t legoCase=kTRUE, TH3F *histos[AliChaoticity::fKbinsT][AliChaoticity::fCentBins]=0x0);
90814457 77 void SetMomResCorrections(Bool_t legoCase=kTRUE, TH2D *temp2D=0x0);
baba9c2d 78 void SetFSICorrelations(Bool_t legoCase=kTRUE, TH2D *temp2DTherm[6]=0x0, TH3D *temp3Dos[6]=0x0, TH3D *temp3Dss[6]=0x0);
bdf4d668 79 //
654866df 80 void SetMCdecision(Bool_t mc) {fMCcase = mc;}
81 void SetTabulatePairs(Bool_t tabulate) {fTabulatePairs = tabulate;}
82 void SetPbPbCase(Bool_t pbpb) {fPbPbcase = pbpb;}
83 void SetGenerateSignal(Bool_t gen) {fGenerateSignal = gen;}
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;}
dbcaf506 87 void SetMaxChi2NDF(Float_t MaxChi2NDF) {fMaxChi2NDF = MaxChi2NDF;}
88 void SetMinTPCncls(Int_t MinTPCncls) {fMinTPCncls = MinTPCncls;}
e29e02c1 89 void SetPairSeparationCutEta(Float_t pairsep) {fMinSepPairEta = pairsep;}
90 void SetPairSeparationCutPhi(Float_t pairsep) {fMinSepPairPhi = pairsep;}
654866df 91 void SetNsigmaTPC(Float_t nsig) {fSigmaCutTPC = nsig;}
92 void SetNsigmaTOF(Float_t nsig) {fSigmaCutTOF = nsig;}
05db4376 93 void SetRMax(Int_t rbin) {fRMax = rbin;}
5fc49f8c 94 void SetFixedLambdaBinMomRes(Int_t lbin) {fFixedLambdaBinMomRes = lbin;}
95 void SetFixedLambdaBinr3(Int_t lbin) {fFixedLambdaBinr3 = lbin;}
654866df 96 //
bdf4d668 97
c4980714 98
99 private:
100
cd12341d 101 void ParInit();
102 Bool_t AcceptPair(AliChaoticityTrackStruct, AliChaoticityTrackStruct);
103 Float_t GamovFactor(Int_t, Int_t, Float_t);
104 void Shuffle(Int_t*, Int_t, Int_t);
5e3e77d6 105 Short_t FillIndex2part(Short_t);
106 Short_t FillIndex3part(Short_t);
107 Short_t SetQcutBin(Short_t);
108 Short_t SetNormBin(Short_t);
109 void SetFillBins2(Short_t, Short_t, Short_t, Int_t, Int_t, Int_t&, Int_t&);
110 void SetFillBins3(Short_t, Short_t, Short_t, Short_t, Int_t, Int_t, Int_t, Short_t, Int_t&, Int_t&, Int_t&, Bool_t&, Bool_t&, Bool_t&);
111 void ArrangeQs(Short_t, Short_t, Short_t, Short_t, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, Short_t, Short_t, Float_t&, Float_t&, Float_t&);
112 Float_t GetQinv(Short_t, Float_t[], Float_t[]);
cd12341d 113 void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&);
2f00662e 114 void GetWeight(Float_t[], Float_t[], Float_t&, Float_t&);
90814457 115 void FourVectProdTerms(Float_t [], Float_t [], Float_t [], Float_t&, Float_t&, Float_t&, Float_t&, Float_t&);
90814457 116 Float_t FSICorrelationTherm2(Int_t, Int_t, Float_t);
cd12341d 117 Float_t MCWeight(Int_t, Int_t, Int_t, Int_t, Float_t);
654866df 118 Float_t MCWeightOSL(Int_t, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, Float_t);
90814457 119 Float_t MCWeight3D(Bool_t, Int_t, Int_t, Float_t, Float_t, Float_t);
5e3e77d6 120 Double_t FSICorrelationOmega0(Bool_t, Double_t, Double_t, Double_t);
cd12341d 121 //
c4980714 122
cd12341d 123
124 const char* fname;// name of class
125 AliAODEvent *fAOD; //! // AOD object
cd12341d 126 TList *fOutputList; //! Compact Output list
127 AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil
128
129
130 AliChaoticityEventCollection ***fEC; //!
131 AliChaoticityEventStruct *fEvt; //!
132 AliChaoticityTrackStruct *fTempStruct; //!
133 TRandom3* fRandomNumber; //!
134
135
136
137 //////////////////////////////
138 // histogram structures
139
140 struct St_DT {
141 TH3D *fTwoPartNorm; //!
142 //TH3D *fTwoPartNormErr; //!
fa109294 143 TH3D *f4VectProd1TwoPartNorm; //!
144 TH3D *f4VectProd2TwoPartNorm; //!
90814457 145 TH3D *f4VectProd1TwoPartNormIdeal; //!
146 TH3D *f4VectProd2TwoPartNormIdeal; //!
147 TH3D *f4VectProd1TwoPartNormSmeared; //!
148 TH3D *f4VectProd2TwoPartNormSmeared; //!
cd12341d 149 };
150 struct St6 {
151 TH1D *fExplicit3; //!
152 TH1D *fNormEx3; //!
153 //
154 TH1D *fNorm3; //!
155 TH3D *fTerms3; //!
90814457 156 TH3D *f4VectProd1Terms; //!
157 TH3D *f4VectProd2Terms; //!
158 TH3D *f4VectProd1TermsIdeal; //!
159 TH3D *f4VectProd2TermsIdeal; //!
160 TH3D *f4VectProd1TermsSmeared; //!
161 TH3D *f4VectProd2TermsSmeared; //!
162 TH3D *f4VectProd1TermsSumK3; //!
163 TH3D *f4VectProd2TermsSumK3; //!
164 TH3D *f4VectProd1TermsEnK3; //!
165 TH3D *f4VectProd2TermsEnK3; //!
166 TH3D *f4VectProd1TermsSumK2; //!
167 TH3D *f4VectProd2TermsSumK2; //!
168 TH3D *f4VectProd1TermsEnK2; //!
169 TH3D *f4VectProd2TermsEnK2; //!
5e3e77d6 170 TH3D *fIdeal; //!
171 TH3D *fSmeared; //!
601fbb33 172 TH3D *fQW12; //!
173 TH3D *fQW13; //!
90814457 174 TH3D *fSumK3; //!
175 TH3D *fEnK3; //!
0e58bc53 176 TH3D *f4VectProd1Q3W; //!
177 TH3D *f4VectProd2Q3W; //!
cd12341d 178 //
179 struct St_DT DT[kDENtypes];
180 };
181 struct St7 {
182 TH3D *fExplicit2OSL; //!
183 TH3D *fExplicit2OSLQW; //!
184 };
185 struct St5 {
186 TH2D *fExplicit2; //!
5e3e77d6 187 TH2D *fExplicit2QW; //!
654866df 188 TH3D *fExplicit2ThreeD; //!
704f2481 189 TProfile2D *fAvgP; //!
cd12341d 190 TH2D *fIdeal; //!
191 TH2D *fSmeared; //!
fa109294 192 //
193 TH1D *fMCqinv; //!
194 TH1D *fMCqinvQW; //!
54d66278 195 TH2D *fPIDpurityDen; //!
196 TH2D *fPIDpurityNum; //!
cd12341d 197 struct St7 OSL_ktbin[2];
198 };
199 struct St_EDB {// SC structure
200 struct St5 TwoPT[2];
201 struct St6 ThreePT[5];
202 };
203 struct St_M {
654866df 204 struct St_EDB EDB[fEDbins];
cd12341d 205 };
206 struct St4 {
654866df 207 struct St_M MB[fCentBins];
cd12341d 208 };
209 struct St3 {
210 struct St4 SC[kSCLimit3];
211 };
212 struct St2 {
213 struct St3 Charge3[2];
214 struct St4 SC[kSCLimit2];
215 };
216 struct St1 {
217 struct St2 Charge2[2];
218 };
b6e5ec54 219 struct St1 Charge1[2];//!
cd12341d 220
221
222 /////////////////////
223 // 4D r3 denominator
224 struct St_Ky {
654866df 225 struct St_M MB[fCentBins];
cd12341d 226 };
227 struct St_Kt {
654866df 228 struct St_Ky KY[fKbinsY];
cd12341d 229 };
654866df 230 struct St_Kt KT[fKbinsT];//!
cd12341d 231
232
233 Bool_t fLEGO;
234 Bool_t fMCcase;
235 Bool_t fAODcase;
236 Bool_t fPbPbcase;
654866df 237 Bool_t fGenerateSignal;
cd12341d 238 Bool_t fPdensityExplicitLoop;
239 Bool_t fPdensityPairCut;
240 Bool_t fTabulatePairs;
05db4376 241 Int_t fRMax;
5fc49f8c 242 Int_t fFixedLambdaBinMomRes;
243 Int_t fFixedLambdaBinr3;
654866df 244 UInt_t fFilterBit;
dbcaf506 245 Float_t fMaxChi2NDF;
246 Int_t fMinTPCncls;
cd12341d 247 Double_t fBfield;
248 Int_t fMbin;
ae9b34d1 249 Int_t fFSIbin;
cd12341d 250 Int_t fEDbin;
251 Int_t fMbins;
252 Int_t fMultLimit;
253 Int_t fCentBinLowLimit;
254 Int_t fCentBinHighLimit;
255 Int_t fEventCounter;
256 Int_t fEventsToMix;
257 Int_t fZvertexBins;
258 Int_t fMultLimits[kMultBinspp+1];
259 Float_t fQcut[3];
260 Float_t fQLowerCut;
261 Float_t fNormQcutLow[3];
262 Float_t fNormQcutHigh[3];
263 Float_t fKupperBound;
264 Float_t fQupperBound;
265 Float_t fQupperBoundWeights;
654866df 266 Float_t fKstepT[fKbinsT];
267 Float_t fKstepY[fKbinsY];
268 Float_t fKmeanT[fKbinsT];
269 Float_t fKmeanY[fKbinsY];
270 Float_t fKmiddleT[fKbinsT];
271 Float_t fKmiddleY[fKbinsY];
cd12341d 272 Float_t fQstep;
5e3e77d6 273 Float_t fQstepWeights;
cd12341d 274 Float_t fQmean[kQbinsWeights];
275 Float_t fDampStart;
276 Float_t fDampStep;
277
cd12341d 278 Float_t fTPCTOFboundry;
279 Float_t fTOFboundry;
280 Float_t fSigmaCutTPC;
281 Float_t fSigmaCutTOF;
282
e29e02c1 283 Float_t fMinSepPairEta;
284 Float_t fMinSepPairPhi;
cd12341d 285 Float_t fShareQuality;
286 Float_t fShareFraction;
287
288 Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;
289
f5df8b1d 290 Int_t fKtIndexL,fKtIndexH;
cd12341d 291 //
f5df8b1d 292 Int_t fQoIndexL,fQoIndexH;
293 Int_t fQsIndexL,fQsIndexH;
294 Int_t fQlIndexL,fQlIndexH;
cd12341d 295
296 Bool_t fDummyB;
297
cd12341d 298
299 Char_t fDefaultsCharMult[kMultLimitPbPb];//!
300 Char_t fDefaultsCharSE[kPairLimit];//!
301 Char_t fDefaultsCharME[2*kPairLimit];//!
302 Int_t fDefaultsInt[kMultLimitPbPb];//!
303 TArrayI *fPairLocationSE[kMultLimitPbPb];//!
304 TArrayI *fPairLocationME[kMultLimitPbPb];//!
305 TArrayC *fTripletSkip1[kPairLimit];//!
306 TArrayC *fTripletSkip2[2*kPairLimit];//!
307 TArrayI *fOtherPairLocation1[2][kMultLimitPbPb];//!
308 TArrayI *fOtherPairLocation2[2][kMultLimitPbPb];//!
309 TArrayC *fNormPairSwitch[3][kMultLimitPbPb];//!
310 TArrayC *fPairSplitCut[4][kMultLimitPbPb];//!
311
312 AliChaoticityNormPairStruct *fNormPairs[3];//!
bdf4d668 313
314 public:
baba9c2d 315 TH2D *fMomResC2;
316 TH2D *fFSI2SS;
317 TH2D *fFSI2OS;
863848e3 318 TH3D *fFSIOmega0SS[6];
319 TH3D *fFSIOmega0OS[6];
6e805184 320 TH3F *fNormWeight[fKbinsT][fCentBins];
321
5e3e77d6 322
cd12341d 323 ClassDef(AliChaoticity, 1);
324};
325
326#endif