1 #ifndef AliChaoticity_cxx
2 #define AliChaoticity_cxx
8 // Dhevan Gangadharan (dhevan.raja.gangadharan@cern.ch)
25 class AliESDtrackCuts;
28 #include "AliAnalysisTask.h"
29 #include "AliAnalysisTaskSE.h"
30 #include "AliESDpid.h"
31 #include "AliAODPid.h"
32 #include "AliChaoticityEventCollection.h"
33 #include "AliCentrality.h"
35 class AliChaoticity : public AliAnalysisTaskSE {
39 AliChaoticity(const Char_t *name, Bool_t MCdecision=kFALSE, Bool_t Tabulatedecision=kFALSE, Bool_t PbPbdecision=kTRUE, Int_t lowCentBin=0, Int_t highCentBin=1., Bool_t lego=kTRUE);
40 virtual ~AliChaoticity();
41 AliChaoticity(const AliChaoticity &obj);
42 AliChaoticity &operator=(const AliChaoticity &obj);
46 virtual void UserCreateOutputObjects();
47 virtual void Exec(Option_t *option);
48 virtual void Terminate(Option_t *);
51 kPairLimit = 15000,//15000
52 kNormPairLimit = 45000,
53 kMultLimitPbPb = 2000,//2000
55 kMultBinspp = 11,//20 or 11
56 kKbinsT = 3,// Set fKstep as well !!!!
57 kKbinsY = 1,// Set fKstep as well !!!!
62 kNDampValues = 16,// change to 11 soon
63 kDENtypes = (kRVALUES)*kNDampValues,
66 kSCLimit3 = 1,// 1, 10
71 Bool_t AcceptPair(AliChaoticityTrackStruct, AliChaoticityTrackStruct);
72 Float_t GamovFactor(Int_t, Int_t, Float_t);
73 void Shuffle(Int_t*, Int_t, Int_t);
74 short FillIndex2part(short);
75 short FillIndex3part(short);
76 short SetQcutBin(short);
77 short SetNormBin(short);
78 void SetFillBins2(short, short, short, Int_t, Int_t, Int_t&, Int_t&);
79 void SetFillBins3(short, short, short, short, Int_t, Int_t, Int_t, short, Int_t&, Int_t&, Int_t&, Bool_t&, Bool_t&, Bool_t&);
80 void ArrangeQs(short, short, short, short, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, short, short, Float_t&, Float_t&, Float_t&);
81 Float_t GetQinv(short, Float_t[], Float_t[]);
82 void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&);
83 void SetWeightArrays();
84 void SetWeightArraysLEGO(TH3F *histos[kKbinsT][kCentBins]);
85 void SetMomResCorrections();
86 void SetMomResCorrectionsLEGO(TH2D *histo);
87 Float_t GetMomRes(Int_t, Float_t);
88 void GetWeight(Float_t[], Float_t[], Float_t&, Float_t&);
89 Float_t CoulCorr(Int_t, Int_t, Int_t, Float_t);
90 void SetCoulCorrections();
91 void SetCoulCorrectionsLEGO(Float_t[kNlinesCoulFile], Float_t[kRVALUES][kNlinesCoulFile], Float_t[kRVALUES][kNlinesCoulFile]);
92 Float_t MCWeight(Int_t, Int_t, Int_t, Int_t, Float_t);
93 Float_t MCWeightOSL(Float_t, Float_t, Float_t, Float_t, Float_t, Float_t);
94 Float_t MCWeightr3(Int_t, Int_t, Int_t, Float_t, Float_t, Float_t);
96 Int_t GetNumKtbins() const {return kKbinsT;}
97 Int_t GetNumCoulLines() const {return kNlinesCoulFile;}
98 Int_t GetNumRValues() const {return kRVALUES;}
99 Int_t GetNumCentBins() const {return kCentBins;}
102 const char* fname;// name of class
103 AliAODEvent *fAOD; //! // AOD object
104 //AliESDEvent *fESD; //! // ESD object
105 TList *fOutputList; //! Compact Output list
106 AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil
109 AliChaoticityEventCollection ***fEC; //!
110 AliChaoticityEventStruct *fEvt; //!
111 AliChaoticityTrackStruct *fTempStruct; //!
112 TRandom3* fRandomNumber; //!
116 //////////////////////////////
117 // histogram structures
120 TH3D *fTwoPartNorm; //!
121 //TH3D *fTwoPartNormErr; //!
124 TH1D *fExplicit3; //!
130 struct St_DT DT[kDENtypes];
133 TH3D *fExplicit2OSL; //!
134 TH3D *fExplicit2OSLQW; //!
137 TH2D *fExplicit2; //!
138 TH3I *fExplicit2ThreeD; //!
141 struct St7 OSL_ktbin[2];
143 struct St_EDB {// SC structure
145 struct St6 ThreePT[5];
148 struct St_EDB EDB[kEDbins];
151 struct St_M MB[kCentBins];
154 struct St4 SC[kSCLimit3];
157 struct St3 Charge3[2];
158 struct St4 SC[kSCLimit2];
161 struct St2 Charge2[2];
163 struct St1 Charge1[2];//!
166 /////////////////////
169 struct St_M MB[kCentBins];
172 struct St_Ky KY[kKbinsY];
174 struct St_Kt KT[kKbinsT];//!
181 Bool_t fPdensityExplicitLoop;
182 Bool_t fPdensityPairCut;
183 Bool_t fTabulatePairs;
189 Int_t fCentBinLowLimit;
190 Int_t fCentBinHighLimit;
194 Int_t fMultLimits[kMultBinspp+1];
197 Float_t fNormQcutLow[3];
198 Float_t fNormQcutHigh[3];
199 Float_t fKupperBound;
200 Float_t fQupperBound;
201 Float_t fQupperBoundWeights;
202 Float_t fKstepT[kKbinsT];
203 Float_t fKstepY[kKbinsY];
204 Float_t fKmeanT[kKbinsT];
205 Float_t fKmeanY[kKbinsY];
206 Float_t fKmiddleT[kKbinsT];
207 Float_t fKmiddleY[kKbinsY];
209 Float_t fQmean[kQbinsWeights];
213 Float_t fQCoul[100];//! 2 MeV bins
214 Float_t fCoulSS[kRVALUES][100];//! Radii, Q
215 Float_t fCoulOS[kRVALUES][100];//! Radii, Q
216 Float_t fMomResWeights[kDENtypes][kQbinsWeights];//!
219 Float_t fTPCTOFboundry;
221 Float_t fSigmaCutTPC;
222 Float_t fSigmaCutTOF;
224 Float_t fMinSepTPCEntrancePhi;
225 Float_t fMinSepTPCEntranceEta;
226 Float_t fShareQuality;
227 Float_t fShareFraction;
229 Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;
231 Int_t fKtbinL,fKtbinH;
232 Int_t fKybinL,fKybinH;
234 Int_t fQobinL,fQobinH;
235 Int_t fQsbinL,fQsbinH;
236 Int_t fQlbinL,fQlbinH;
240 Float_t *******fNormWeight;//! osl kt binning
241 Float_t *******fNormWeightErr;//! osl kt binning
244 Char_t fDefaultsCharMult[kMultLimitPbPb];//!
245 Char_t fDefaultsCharSE[kPairLimit];//!
246 Char_t fDefaultsCharME[2*kPairLimit];//!
247 Int_t fDefaultsInt[kMultLimitPbPb];//!
248 TArrayI *fPairLocationSE[kMultLimitPbPb];//!
249 TArrayI *fPairLocationME[kMultLimitPbPb];//!
250 TArrayC *fTripletSkip1[kPairLimit];//!
251 TArrayC *fTripletSkip2[2*kPairLimit];//!
252 TArrayI *fOtherPairLocation1[2][kMultLimitPbPb];//!
253 TArrayI *fOtherPairLocation2[2][kMultLimitPbPb];//!
254 TArrayC *fNormPairSwitch[3][kMultLimitPbPb];//!
255 TArrayC *fPairSplitCut[4][kMultLimitPbPb];//!
257 AliChaoticityNormPairStruct *fNormPairs[3];//!
261 ClassDef(AliChaoticity, 1);