]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/FEMTOSCOPY/Chaoticity/AliThreePionRadii.h
Change FilterBit procedure when !=7, include Kt3 binning
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / Chaoticity / AliThreePionRadii.h
CommitLineData
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
13class TH1F;
14class TH3F;
15class TH1D;
16class TH2D;
17class TH3D;
18
19class TProfile;
20class TProfile2D;
21class TRandom3;
22
23class AliESDEvent;
24class AliAODEvent;
25class AliESDtrackCuts;
26class AliESDpid;
27
28#include "AliAnalysisTask.h"
29#include "AliAnalysisTaskSE.h"
30#include "AliESDpid.h"
31#include "AliAODPid.h"
32#include "AliChaoticityEventCollection.h"
54dcc354 33
34class 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