]>
Commit | Line | Data |
---|---|---|
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 | ||
13 | class TH1F; | |
14 | class TH3F; | |
15 | class TH1D; | |
16 | class TH2D; | |
17 | class TH3D; | |
18 | ||
19 | class TProfile; | |
20 | class TProfile2D; | |
21 | class TRandom3; | |
22 | ||
23 | class AliESDEvent; | |
24 | class AliAODEvent; | |
25 | class AliESDtrackCuts; | |
26 | class 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 | ||
35 | class 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 !!!! |
ca188119 | 67 | static const Int_t fEDbins = 2; |
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); |
6903e04b | 117 | Float_t MCWeight(Int_t, Int_t, Int_t, Int_t, Float_t, Float_t); |
654866df | 118 | Float_t MCWeightOSL(Int_t, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, Float_t); |
6903e04b | 119 | Float_t MCWeight3D(Bool_t, Int_t, Int_t, Float_t, Float_t, Float_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 |