Revert "Revert git "Femto ESE code updates (Alice Ohlson)""
[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();
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,
fefa306a 56 kQbinsPP = 50,// 40
86d74bd0 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