]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/Chaoticity/AliChaoticity.h
418eb23d0f50463e8843c3a1d096c0f784e72c4b
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / Chaoticity / AliChaoticity.h
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();
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);
43   
44  private:
45
46   virtual void   UserCreateOutputObjects();
47   virtual void   Exec(Option_t *option);
48   virtual void   Terminate(Option_t *);
49   
50  enum {
51     kPairLimit = 15000,//15000
52     kNormPairLimit = 45000,
53     kMultLimitPbPb = 2000,//2000
54     kMultLimitpp = 300,
55     kMultBinspp = 11,//20 or 11
56     kKbinsT = 3,// Set fKstep as well !!!!
57     kKbinsY = 1,// Set fKstep as well !!!!
58     kQbins = 20,
59     kQbinsWeights = 40,
60     kEDbins = 1,
61     kRVALUES = 8,
62     kNDampValues = 16,// change to 11 soon
63     kDENtypes = (kRVALUES)*kNDampValues,
64     kCentBins=10,// 0-50%
65     kSCLimit2 = 1,// 1, 6
66     kSCLimit3 = 1,// 1, 10
67     kNlinesCoulFile = 99
68   };
69
70   void ParInit();
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);
95   //
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;}
100
101   
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
107   
108   
109   AliChaoticityEventCollection ***fEC; //!
110   AliChaoticityEventStruct *fEvt; //!
111   AliChaoticityTrackStruct *fTempStruct; //!
112   TRandom3* fRandomNumber; //!
113
114   
115  
116   //////////////////////////////
117   // histogram structures
118
119   struct St_DT {
120     TH3D *fTwoPartNorm; //!
121     //TH3D *fTwoPartNormErr; //!
122   };  
123   struct St6 {
124     TH1D *fExplicit3; //!
125     TH1D *fNormEx3; //!
126     //
127     TH1D *fNorm3; //!
128     TH3D *fTerms3; //!
129     //
130     struct St_DT DT[kDENtypes];
131   };
132   struct St7 {
133     TH3D *fExplicit2OSL; //!
134     TH3D *fExplicit2OSLQW; //!
135   };
136   struct St5 {
137     TH2D *fExplicit2; //!
138     TH3I *fExplicit2ThreeD; //!
139     TH2D *fIdeal; //!
140     TH2D *fSmeared; //!
141     struct St7 OSL_ktbin[2];
142   };
143   struct St_EDB {// SC structure
144     struct St5 TwoPT[2];
145     struct St6 ThreePT[5];
146   };
147   struct St_M {
148     struct St_EDB EDB[kEDbins];
149   };
150   struct St4 {
151     struct St_M MB[kCentBins];
152   };
153   struct St3 {
154     struct St4 SC[kSCLimit3];
155   };
156   struct St2 {
157     struct St3 Charge3[2];
158     struct St4 SC[kSCLimit2];
159   };
160   struct St1 {
161     struct St2 Charge2[2];
162   };
163   struct St1 Charge1[2];//!
164
165
166   /////////////////////
167   // 4D r3 denominator
168   struct St_Ky {
169     struct St_M MB[kCentBins];
170   };
171   struct St_Kt {
172     struct St_Ky KY[kKbinsY];
173   };
174   struct St_Kt KT[kKbinsT];//!
175   
176  
177   Bool_t fLEGO;
178   Bool_t fMCcase;
179   Bool_t fAODcase;
180   Bool_t fPbPbcase;
181   Bool_t fPdensityExplicitLoop;
182   Bool_t fPdensityPairCut;
183   Bool_t fTabulatePairs;
184   Double_t fBfield;
185   Int_t fMbin;
186   Int_t fEDbin;
187   Int_t fMbins;
188   Int_t fMultLimit;      
189   Int_t fCentBinLowLimit;
190   Int_t fCentBinHighLimit;
191   Int_t fEventCounter;
192   Int_t fEventsToMix;
193   Int_t fZvertexBins;
194   Int_t fMultLimits[kMultBinspp+1];
195   Float_t fQcut[3];
196   Float_t fQLowerCut;
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];
208   Float_t fQstep;
209   Float_t fQmean[kQbinsWeights];
210   Float_t fDampStart;
211   Float_t fDampStep;
212   
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];//!
217
218
219   Float_t fTPCTOFboundry;
220   Float_t fTOFboundry;
221   Float_t fSigmaCutTPC;
222   Float_t fSigmaCutTOF;
223   
224   Float_t fMinSepTPCEntrancePhi;
225   Float_t fMinSepTPCEntranceEta;
226   Float_t fShareQuality;
227   Float_t fShareFraction;
228   
229   Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;
230  
231   Int_t fKtbinL,fKtbinH;
232   Int_t fKybinL,fKybinH;
233   //
234   Int_t fQobinL,fQobinH;
235   Int_t fQsbinL,fQsbinH;
236   Int_t fQlbinL,fQlbinH;
237
238   Bool_t fDummyB;
239
240   Float_t *******fNormWeight;//! osl kt binning
241   Float_t *******fNormWeightErr;//! osl kt binning
242
243   
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];//!
256   
257   AliChaoticityNormPairStruct *fNormPairs[3];//!
258  
259  
260    
261   ClassDef(AliChaoticity, 1); 
262 };
263
264 #endif