]>
Commit | Line | Data |
---|---|---|
54dcc354 | 1 | #ifndef AliThreePionRadii_cxx |
2 | #define AliThreePionRadii_cxx | |
3 | // | |
4 | // Class AliThreePionRadii | |
5 | // | |
6 | // AliThreePionRadii | |
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" | |
54dcc354 | 33 | |
34 | class AliThreePionRadii : public AliAnalysisTaskSE { | |
35 | public: | |
36 | ||
37 | AliThreePionRadii(); | |
38 | AliThreePionRadii(const Char_t *name); | |
39 | virtual ~AliThreePionRadii(); | |
40 | AliThreePionRadii(const AliThreePionRadii &obj); | |
41 | AliThreePionRadii &operator=(const AliThreePionRadii &obj); | |
42 | ||
43 | ||
44 | virtual void UserCreateOutputObjects(); | |
beb4f502 | 45 | virtual void UserExec(Option_t *option); |
54dcc354 | 46 | virtual void Terminate(Option_t *); |
47 | ||
48 | enum { | |
49 | kPairLimit = 15000,//15000 | |
b5bc1b54 | 50 | kNormPairLimit = 45000,//45000 |
54dcc354 | 51 | kMultLimitPbPb = 2000,//2000 |
b5bc1b54 | 52 | kMultLimitPP = 300,//300 |
53 | kMCarrayLimit = 110000,//110000 | |
54dcc354 | 54 | kQbins = 20, |
55 | kQbinsWeights = 40, | |
86d74bd0 | 56 | kQbinsPP = 40, |
57 | kQbinsWeightsPP = 40, | |
54dcc354 | 58 | kNDampValues = 16, |
59 | kRmin = 2,// min radii for Momentum resolution calculations | |
60 | kDENtypes = 1,// was (kRVALUES)*kNDampValues | |
61 | kSCLimit2 = 1,// 1, 6 | |
62 | kSCLimit3 = 1// 1, 10 | |
63 | }; | |
64 | ||
b5bc1b54 | 65 | static const Int_t fEDbins = 3; |
9edcfecf | 66 | static const Int_t fCentBins = 20;// 0-100% PbPb, pPb, pp |
54dcc354 | 67 | static const Int_t fRVALUES = 10;// |
68 | ||
69 | ||
70 | Int_t GetNumRValues() const {return AliThreePionRadii::fRVALUES;} | |
71 | Int_t GetNumCentBins() const {return AliThreePionRadii::fCentBins;} | |
72 | Int_t GetNumEDBins() const {return AliThreePionRadii::fEDbins;} | |
73 | void SetFSICorrelations(Bool_t legoCase=kTRUE, TH1D *temp1DSS[10]=0x0, TH1D *temp1DOS[10]=0x0); | |
74 | // | |
75 | void SetMCdecision(Bool_t mc) {fMCcase = mc;} | |
76 | void SetPbPbCase(Bool_t pbpb) {fPbPbcase = pbpb;} | |
77 | void SetGenerateSignal(Bool_t gen) {fGenerateSignal = gen;} | |
b5bc1b54 | 78 | void SetNumKt3Bins(Int_t kt3bins) {fKt3bins = kt3bins;} |
86d74bd0 | 79 | void SetV0Mbinning(Bool_t V0Mbinning) {fV0Mbinning = V0Mbinning;} |
54dcc354 | 80 | void SetCentBinRange(Int_t low, Int_t high) {fCentBinLowLimit = low; fCentBinHighLimit = high;} |
81 | void SetLEGOCase(Bool_t lego) {fLEGO = lego;} | |
82 | void SetFilterBit(UInt_t filterbit) {fFilterBit = filterbit;} | |
83 | void SetMaxChi2NDF(Float_t MaxChi2NDF) {fMaxChi2NDF = MaxChi2NDF;} | |
84 | void SetMinTPCncls(Int_t MinTPCncls) {fMinTPCncls = MinTPCncls;} | |
85 | void SetPairSeparationCutEta(Float_t pairsep) {fMinSepPairEta = pairsep;} | |
86 | void SetPairSeparationCutPhi(Float_t pairsep) {fMinSepPairPhi = pairsep;} | |
87 | void SetNsigmaTPC(Float_t nsig) {fSigmaCutTPC = nsig;} | |
88 | void SetNsigmaTOF(Float_t nsig) {fSigmaCutTOF = nsig;} | |
89 | void SetRMax(Int_t rbin) {fRMax = rbin;} | |
2abcc9d8 | 90 | void SetTriggerType(Int_t tt) {fTriggerType = tt;} |
54dcc354 | 91 | // |
92 | ||
93 | ||
94 | private: | |
95 | ||
96 | void ParInit(); | |
6aa973b0 | 97 | Bool_t AcceptPair(AliChaoticityTrackStruct*, AliChaoticityTrackStruct*); |
54dcc354 | 98 | Float_t GamovFactor(Int_t, Int_t, Float_t); |
99 | void Shuffle(Int_t*, Int_t, Int_t); | |
100 | Short_t FillIndex2part(Short_t); | |
101 | Short_t FillIndex3part(Short_t); | |
102 | Short_t SetQcutBin(Short_t); | |
103 | Short_t SetNormBin(Short_t); | |
104 | void SetFillBins2(Short_t, Short_t, Short_t, Int_t, Int_t, Int_t&, Int_t&); | |
105 | 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&); | |
106 | 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&); | |
107 | Float_t GetQinv(Short_t, Float_t[], Float_t[]); | |
108 | void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&); | |
109 | Float_t FSICorrelation2(Int_t, Int_t, Float_t); | |
110 | Float_t MCWeight(Int_t, Int_t, Float_t, Int_t, Float_t); | |
111 | Float_t MCWeight3D(Bool_t, Int_t, Int_t, Float_t, Float_t, Float_t); | |
112 | // | |
113 | ||
114 | ||
115 | const char* fname;// name of class | |
116 | AliAODEvent *fAOD; //! // AOD object | |
117 | TList *fOutputList; //! Compact Output list | |
118 | AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil | |
119 | ||
120 | ||
121 | AliChaoticityEventCollection ***fEC; //! | |
122 | AliChaoticityEventStruct *fEvt; //! | |
123 | AliChaoticityTrackStruct *fTempStruct; //! | |
124 | TRandom3* fRandomNumber; //! | |
125 | ||
126 | ||
127 | ||
128 | ////////////////////////////// | |
129 | // histogram structures | |
130 | ||
131 | struct St6 { | |
54dcc354 | 132 | TH1D *fNorm3; //! |
133 | TH3D *fTerms3; //! | |
134 | TH1D *fTermsQ3; //! | |
135 | TH1D *fIdeal; //! | |
136 | TH1D *fSmeared; //! | |
9a5ac3ee | 137 | TH1D *fMeanKt; //! |
54dcc354 | 138 | }; |
139 | struct St5 { | |
140 | TH2D *fExplicit2; //! | |
141 | TH2D *fExplicit2QW; //! | |
54dcc354 | 142 | TProfile2D *fAvgP; //! |
143 | TH2D *fIdeal; //! | |
144 | TH2D *fSmeared; //! | |
9a5ac3ee | 145 | TH1D *fMeanKt; //! |
54dcc354 | 146 | // |
147 | TH1D *fMCqinv; //! | |
148 | TH1D *fMCqinvQW; //! | |
149 | TH2D *fPIDpurityDen; //! | |
3ec51ffd | 150 | TH3D *fPIDpurityNum; //! |
54dcc354 | 151 | }; |
152 | struct St_EDB {// SC structure | |
153 | struct St5 TwoPT[2]; | |
154 | struct St6 ThreePT[5]; | |
155 | }; | |
156 | struct St_M { | |
157 | struct St_EDB EDB[fEDbins]; | |
158 | }; | |
159 | struct St4 { | |
160 | struct St_M MB[fCentBins]; | |
161 | }; | |
162 | struct St3 { | |
163 | struct St4 SC[kSCLimit3]; | |
164 | }; | |
165 | struct St2 { | |
166 | struct St3 Charge3[2]; | |
167 | struct St4 SC[kSCLimit2]; | |
168 | }; | |
169 | struct St1 { | |
170 | struct St2 Charge2[2]; | |
171 | }; | |
2af8f9f5 | 172 | struct St1 Charge1[2];//! |
54dcc354 | 173 | |
174 | ||
175 | ||
176 | Bool_t fLEGO; | |
177 | Bool_t fMCcase; | |
178 | Bool_t fAODcase; | |
179 | Bool_t fPbPbcase; | |
180 | Bool_t fGenerateSignal; | |
e4e72cc9 | 181 | Bool_t fGeneratorOnly; |
54dcc354 | 182 | Bool_t fPdensityPairCut; |
183 | Int_t fRMax; | |
184 | UInt_t fFilterBit; | |
185 | Float_t fMaxChi2NDF; | |
186 | Int_t fMinTPCncls; | |
187 | Double_t fBfield; | |
188 | Int_t fMbin; | |
189 | Int_t fFSIindex; | |
190 | Int_t fEDbin; | |
191 | Int_t fMbins; | |
b5bc1b54 | 192 | Int_t fMultLimit; |
193 | Int_t fKt3bins; | |
86d74bd0 | 194 | Bool_t fV0Mbinning; |
54dcc354 | 195 | Int_t fCentBinLowLimit; |
196 | Int_t fCentBinHighLimit; | |
2abcc9d8 | 197 | Int_t fTriggerType; |
54dcc354 | 198 | Int_t fEventCounter; |
199 | Int_t fEventsToMix; | |
200 | Int_t fZvertexBins; | |
201 | Int_t fMultLimits[fCentBins+1]; | |
202 | Float_t fQcut[3]; | |
203 | Float_t fQLowerCut; | |
204 | Float_t fQlimitC2; | |
205 | Int_t fQbinsC2; | |
206 | Float_t fNormQcutLow[3]; | |
207 | Float_t fNormQcutHigh[3]; | |
208 | Float_t fKupperBound; | |
209 | Float_t fQupperBound; | |
54dcc354 | 210 | Int_t fQbins; |
54dcc354 | 211 | Float_t fDampStart; |
212 | Float_t fDampStep; | |
213 | ||
214 | Float_t fTPCTOFboundry; | |
215 | Float_t fTOFboundry; | |
216 | Float_t fSigmaCutTPC; | |
217 | Float_t fSigmaCutTOF; | |
218 | ||
219 | Float_t fMinSepPairEta; | |
220 | Float_t fMinSepPairPhi; | |
221 | Float_t fShareQuality; | |
222 | Float_t fShareFraction; | |
223 | ||
224 | Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam; | |
225 | ||
226 | Bool_t fDummyB; | |
227 | ||
228 | ||
229 | Char_t fDefaultsCharMult[kMultLimitPbPb];//! | |
230 | Char_t fDefaultsCharSE[kPairLimit];//! | |
231 | Char_t fDefaultsCharME[2*kPairLimit];//! | |
232 | Int_t fDefaultsInt[kMultLimitPbPb];//! | |
233 | TArrayI *fPairLocationSE[kMultLimitPbPb];//! | |
234 | TArrayI *fPairLocationME[kMultLimitPbPb];//! | |
235 | TArrayC *fTripletSkip1[kPairLimit];//! | |
236 | TArrayC *fTripletSkip2[2*kPairLimit];//! | |
237 | TArrayI *fOtherPairLocation1[2][kMultLimitPbPb];//! | |
238 | TArrayI *fOtherPairLocation2[2][kMultLimitPbPb];//! | |
239 | TArrayC *fNormPairSwitch[3][kMultLimitPbPb];//! | |
240 | TArrayC *fPairSplitCut[4][kMultLimitPbPb];//! | |
241 | ||
242 | AliChaoticityNormPairStruct *fNormPairs[3];//! | |
243 | ||
244 | public: | |
245 | TH1D *fFSI2SS[10]; | |
246 | TH1D *fFSI2OS[10]; | |
247 | ||
248 | ClassDef(AliThreePionRadii, 1); | |
249 | }; | |
250 | ||
251 | #endif |