]>
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(); | |
45 | virtual void Exec(Option_t *option); | |
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, | |
56 | kQbinsPP = 40, | |
57 | kQbinsWeightsPP = 40, | |
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;} |
54dcc354 | 79 | void SetCentBinRange(Int_t low, Int_t high) {fCentBinLowLimit = low; fCentBinHighLimit = high;} |
80 | void SetLEGOCase(Bool_t lego) {fLEGO = lego;} | |
81 | void SetFilterBit(UInt_t filterbit) {fFilterBit = filterbit;} | |
82 | void SetMaxChi2NDF(Float_t MaxChi2NDF) {fMaxChi2NDF = MaxChi2NDF;} | |
83 | void SetMinTPCncls(Int_t MinTPCncls) {fMinTPCncls = MinTPCncls;} | |
84 | void SetPairSeparationCutEta(Float_t pairsep) {fMinSepPairEta = pairsep;} | |
85 | void SetPairSeparationCutPhi(Float_t pairsep) {fMinSepPairPhi = pairsep;} | |
86 | void SetNsigmaTPC(Float_t nsig) {fSigmaCutTPC = nsig;} | |
87 | void SetNsigmaTOF(Float_t nsig) {fSigmaCutTOF = nsig;} | |
88 | void SetRMax(Int_t rbin) {fRMax = rbin;} | |
89 | // | |
90 | ||
91 | ||
92 | private: | |
93 | ||
94 | void ParInit(); | |
6aa973b0 | 95 | Bool_t AcceptPair(AliChaoticityTrackStruct*, AliChaoticityTrackStruct*); |
54dcc354 | 96 | Float_t GamovFactor(Int_t, Int_t, Float_t); |
97 | void Shuffle(Int_t*, Int_t, Int_t); | |
98 | Short_t FillIndex2part(Short_t); | |
99 | Short_t FillIndex3part(Short_t); | |
100 | Short_t SetQcutBin(Short_t); | |
101 | Short_t SetNormBin(Short_t); | |
102 | void SetFillBins2(Short_t, Short_t, Short_t, Int_t, Int_t, Int_t&, Int_t&); | |
103 | 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&); | |
104 | 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&); | |
105 | Float_t GetQinv(Short_t, Float_t[], Float_t[]); | |
106 | void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&); | |
107 | Float_t FSICorrelation2(Int_t, Int_t, Float_t); | |
108 | Float_t MCWeight(Int_t, Int_t, Float_t, Int_t, Float_t); | |
109 | Float_t MCWeight3D(Bool_t, Int_t, Int_t, Float_t, Float_t, Float_t); | |
110 | // | |
111 | ||
112 | ||
113 | const char* fname;// name of class | |
114 | AliAODEvent *fAOD; //! // AOD object | |
115 | TList *fOutputList; //! Compact Output list | |
116 | AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil | |
117 | ||
118 | ||
119 | AliChaoticityEventCollection ***fEC; //! | |
120 | AliChaoticityEventStruct *fEvt; //! | |
121 | AliChaoticityTrackStruct *fTempStruct; //! | |
122 | TRandom3* fRandomNumber; //! | |
123 | ||
124 | ||
125 | ||
126 | ////////////////////////////// | |
127 | // histogram structures | |
128 | ||
129 | struct St6 { | |
54dcc354 | 130 | TH1D *fNorm3; //! |
131 | TH3D *fTerms3; //! | |
132 | TH1D *fTermsQ3; //! | |
133 | TH1D *fIdeal; //! | |
134 | TH1D *fSmeared; //! | |
135 | }; | |
136 | struct St5 { | |
137 | TH2D *fExplicit2; //! | |
138 | TH2D *fExplicit2QW; //! | |
54dcc354 | 139 | TProfile2D *fAvgP; //! |
140 | TH2D *fIdeal; //! | |
141 | TH2D *fSmeared; //! | |
142 | // | |
143 | TH1D *fMCqinv; //! | |
144 | TH1D *fMCqinvQW; //! | |
145 | TH2D *fPIDpurityDen; //! | |
146 | TH2D *fPIDpurityNum; //! | |
147 | }; | |
148 | struct St_EDB {// SC structure | |
149 | struct St5 TwoPT[2]; | |
150 | struct St6 ThreePT[5]; | |
151 | }; | |
152 | struct St_M { | |
153 | struct St_EDB EDB[fEDbins]; | |
154 | }; | |
155 | struct St4 { | |
156 | struct St_M MB[fCentBins]; | |
157 | }; | |
158 | struct St3 { | |
159 | struct St4 SC[kSCLimit3]; | |
160 | }; | |
161 | struct St2 { | |
162 | struct St3 Charge3[2]; | |
163 | struct St4 SC[kSCLimit2]; | |
164 | }; | |
165 | struct St1 { | |
166 | struct St2 Charge2[2]; | |
167 | }; | |
2af8f9f5 | 168 | struct St1 Charge1[2];//! |
54dcc354 | 169 | |
170 | ||
171 | ||
172 | Bool_t fLEGO; | |
173 | Bool_t fMCcase; | |
174 | Bool_t fAODcase; | |
175 | Bool_t fPbPbcase; | |
176 | Bool_t fGenerateSignal; | |
177 | Bool_t fPdensityPairCut; | |
178 | Int_t fRMax; | |
179 | UInt_t fFilterBit; | |
180 | Float_t fMaxChi2NDF; | |
181 | Int_t fMinTPCncls; | |
182 | Double_t fBfield; | |
183 | Int_t fMbin; | |
184 | Int_t fFSIindex; | |
185 | Int_t fEDbin; | |
186 | Int_t fMbins; | |
b5bc1b54 | 187 | Int_t fMultLimit; |
188 | Int_t fKt3bins; | |
54dcc354 | 189 | Int_t fCentBinLowLimit; |
190 | Int_t fCentBinHighLimit; | |
191 | Int_t fEventCounter; | |
192 | Int_t fEventsToMix; | |
193 | Int_t fZvertexBins; | |
194 | Int_t fMultLimits[fCentBins+1]; | |
195 | Float_t fQcut[3]; | |
196 | Float_t fQLowerCut; | |
197 | Float_t fQlimitC2; | |
198 | Int_t fQbinsC2; | |
199 | Float_t fNormQcutLow[3]; | |
200 | Float_t fNormQcutHigh[3]; | |
201 | Float_t fKupperBound; | |
202 | Float_t fQupperBound; | |
54dcc354 | 203 | Int_t fQbins; |
54dcc354 | 204 | Float_t fDampStart; |
205 | Float_t fDampStep; | |
206 | ||
207 | Float_t fTPCTOFboundry; | |
208 | Float_t fTOFboundry; | |
209 | Float_t fSigmaCutTPC; | |
210 | Float_t fSigmaCutTOF; | |
211 | ||
212 | Float_t fMinSepPairEta; | |
213 | Float_t fMinSepPairPhi; | |
214 | Float_t fShareQuality; | |
215 | Float_t fShareFraction; | |
216 | ||
217 | Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam; | |
218 | ||
219 | Bool_t fDummyB; | |
220 | ||
221 | ||
222 | Char_t fDefaultsCharMult[kMultLimitPbPb];//! | |
223 | Char_t fDefaultsCharSE[kPairLimit];//! | |
224 | Char_t fDefaultsCharME[2*kPairLimit];//! | |
225 | Int_t fDefaultsInt[kMultLimitPbPb];//! | |
226 | TArrayI *fPairLocationSE[kMultLimitPbPb];//! | |
227 | TArrayI *fPairLocationME[kMultLimitPbPb];//! | |
228 | TArrayC *fTripletSkip1[kPairLimit];//! | |
229 | TArrayC *fTripletSkip2[2*kPairLimit];//! | |
230 | TArrayI *fOtherPairLocation1[2][kMultLimitPbPb];//! | |
231 | TArrayI *fOtherPairLocation2[2][kMultLimitPbPb];//! | |
232 | TArrayC *fNormPairSwitch[3][kMultLimitPbPb];//! | |
233 | TArrayC *fPairSplitCut[4][kMultLimitPbPb];//! | |
234 | ||
235 | AliChaoticityNormPairStruct *fNormPairs[3];//! | |
236 | ||
237 | public: | |
238 | TH1D *fFSI2SS[10]; | |
239 | TH1D *fFSI2OS[10]; | |
240 | ||
241 | ClassDef(AliThreePionRadii, 1); | |
242 | }; | |
243 | ||
244 | #endif |