1 #ifndef AliFourPion_cxx
2 #define AliFourPion_cxx
8 // Dhevan Gangadharan (dhevan.raja.gangadharan@cern.ch)
25 class AliESDtrackCuts;
28 #include "AliAnalysisTask.h"
29 #include "AliAnalysisTaskSE.h"
30 #include "AliESDpid.h"
31 #include "AliAODPid.h"
32 #include "AliFourPionEventCollection.h"
33 #include "AliCentrality.h"
35 class AliFourPion : public AliAnalysisTaskSE {
39 AliFourPion(const Char_t *name);
40 virtual ~AliFourPion();
41 AliFourPion(const AliFourPion &obj);
42 AliFourPion &operator=(const AliFourPion &obj);
45 virtual void UserCreateOutputObjects();
46 virtual void UserExec(Option_t *option);
47 virtual void Terminate(Option_t *);
50 kPairLimit = 10000,//10000
51 kNormPairLimit = 45000,
52 kMultLimitPbPb = 1800,//1800
55 kMCarrayLimit = 150000,// 110000
58 kRmin = 5,// EW min radii 5 fm
62 static const Int_t fKbinsT = 4;// Set fKstep as well !!!!
63 static const Int_t fKbinsY = 1;// Set fKstep as well !!!!
64 static const Int_t fEDbins = 2;
65 static const Int_t fCentBins = 10;// 0-50%
66 static const Int_t fRVALUES = 7;// 7 EW radii (5-11) , was 8 Gaussian radii (3-10fm)
69 Int_t GetNumKtBins() const {return AliFourPion::fKbinsT;}
70 Int_t GetNumRValues() const {return AliFourPion::fRVALUES;}
71 Int_t GetNumCentBins() const {return AliFourPion::fCentBins;}
72 Int_t GetNumEDBins() const {return AliFourPion::fEDbins;}
73 void SetWeightArrays(Bool_t legoCase=kTRUE, TH3F *histos[AliFourPion::fKbinsT][AliFourPion::fCentBins]=0x0);
74 void SetMomResCorrections(Bool_t legoCase=kTRUE, TH2D *temp2D=0x0);
75 void SetFSICorrelations(Bool_t legoCase=kTRUE, TH1D *tempss[12]=0x0, TH1D *tempos[12]=0x0);
76 void SetMuonCorrections(Bool_t legoCase=kTRUE, TH2D *tempMuon=0x0);
78 void SetMCdecision(Bool_t mc) {fMCcase = mc;}
79 void SetTabulatePairs(Bool_t tabulate) {fTabulatePairs = tabulate;}
80 void SetPbPbCase(Bool_t pbpb) {fPbPbcase = pbpb;}
81 void SetGenerateSignal(Bool_t gen) {fGenerateSignal = gen;}
82 void SetGeneratorOnly(Bool_t genOnly) {fGeneratorOnly = genOnly;}
83 void SetCentBinRange(Int_t low, Int_t high) {fCentBinLowLimit = low; fCentBinHighLimit = high;}
84 void SetLEGOCase(Bool_t lego) {fLEGO = lego;}
85 void SetFilterBit(UInt_t filterbit) {fFilterBit = filterbit;}
86 void SetMaxChi2NDF(Float_t MaxChi2NDF) {fMaxChi2NDF = MaxChi2NDF;}
87 void SetMinTPCncls(Int_t MinTPCncls) {fMinTPCncls = MinTPCncls;}
88 void SetPairSeparationCutEta(Float_t pairsep) {fMinSepPairEta = pairsep;}
89 void SetPairSeparationCutPhi(Float_t pairsep) {fMinSepPairPhi = pairsep;}
90 void SetNsigmaTPC(Float_t nsig) {fSigmaCutTPC = nsig;}
91 void SetNsigmaTOF(Float_t nsig) {fSigmaCutTOF = nsig;}
92 void SetRMax(Int_t rbin) {fRMax = rbin;}
93 void SetfcSq(Float_t fcSq) {ffcSq = fcSq;}
100 Bool_t AcceptPair(AliFourPionTrackStruct, AliFourPionTrackStruct);
101 Float_t Gamov(Int_t, Int_t, Float_t);
102 void Shuffle(Int_t*, Int_t, Int_t);
103 Float_t GetQinv(Float_t[], Float_t[]);
104 void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&);
105 void GetWeight(Float_t[], Float_t[], Float_t&, Float_t&);
106 Float_t FSICorrelation(Int_t, Int_t, Float_t);
107 Float_t MCWeight(Int_t[2], Float_t, Float_t, Float_t, Float_t);
108 Float_t MCWeightOSL(Int_t, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, Float_t);
109 Float_t MCWeight3(Int_t, Float_t, Float_t, Int_t[3], Float_t[3], Float_t[3]);
110 Float_t MCWeightFSI3(Int_t, Float_t, Float_t, Int_t[3], Float_t[3]);
111 Float_t MCWeight4(Int_t, Float_t, Float_t, Int_t[4], Float_t[6], Float_t[6]);
112 Float_t MCWeightFSI4(Int_t, Float_t, Float_t, Int_t[4], Float_t[6]);
114 void SetFillBins2(Int_t, Int_t, Int_t&, Int_t&);
115 void SetFillBins3(Int_t, Int_t, Int_t, Short_t, Int_t&, Int_t&, Int_t&, Bool_t&, Bool_t&, Bool_t&);
116 void SetFillBins4(Int_t, Int_t, Int_t, Int_t, Int_t&, Int_t&, Int_t&, Int_t&, Int_t, Bool_t[13]);
117 void SetFSIindex(Float_t);
121 const char* fname;// name of class
122 AliAODEvent *fAOD; //! // AOD object
123 TList *fOutputList; //! Compact Output list
124 AliPIDResponse *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil
127 AliFourPionEventCollection ***fEC; //!
128 AliFourPionEventStruct *fEvt; //!
129 AliFourPionTrackStruct *fTempStruct; //!
130 TRandom3* fRandomNumber; //!
134 //////////////////////////////
135 // histogram structures
141 TProfile *fKfactor; //!
142 TProfile *fMeanQinv; //!
146 TH3D *fMuonSmeared; //!
147 TH3D *fMuonIdeal; //!
148 TH3D *fMuonPionK3; //!
149 TH3D *fPionPionK3; //!
151 TH2D *fTwoPartNorm; //!
152 TH2D *fTwoPartNegNorm; //!
153 TH2D *fTwoPartNormErr; //!
156 TH3D *fTerms2OSL; //!
157 TH3D *fTerms2OSLQW; //!
162 TH3D *fTerms2ThreeD; //!
163 TProfile2D *fAvgP; //!
166 TH2D *fUnitMultBin; //!
168 TH2D *fMuonSmeared; //!
169 TH2D *fMuonIdeal; //!
170 TH2D *fMuonPionK2; //!
171 TH2D *fPionPionK2; //!
174 TH2D *fPIDpurityDen; //!
175 TH3D *fPIDpurityNum; //!
176 struct St7 OSL_ktbin[2];
181 TProfile *fKfactor; //!
185 TH3D *fMuonSmeared; //!
186 TH3D *fMuonIdeal; //!
187 TH3D *fMuonPionK4; //!
188 TH3D *fPionPionK4; //!
190 TH2D *fTwoPartNorm; //!
191 TH2D *fTwoPartNegNorm; //!
192 TH2D *fTwoPartNormErr; //!
196 struct St6 ThreePT[5];
197 struct StFourPT FourPT[13];
200 struct St_EDB EDB[fEDbins];
203 struct St_M MB[fCentBins];
206 struct St4 Charge4[2];
207 struct St_M MB[fCentBins];
210 struct St3 Charge3[2];
211 struct St_M MB[fCentBins];
214 struct St2 Charge2[2];
216 struct St1 Charge1[2];//!
219 /////////////////////
222 struct St_M MB[fCentBins];
225 struct St_Ky KY[fKbinsY];
227 struct St_Kt KT[fKbinsT];//!
234 Bool_t fGenerateSignal;
235 Bool_t fGeneratorOnly;
236 Bool_t fTabulatePairs;
248 Int_t fCentBinLowLimit;
249 Int_t fCentBinHighLimit;
253 Int_t fMultLimits[kMultBinspp+1];
256 Float_t fNormQcutLow;
257 Float_t fNormQcutHigh;
258 Float_t fKupperBound;
259 Float_t fQupperBoundQ2;
260 Float_t fQupperBoundQ3;
261 Float_t fQupperBoundQ4;
265 Float_t fQupperBoundWeights;
266 Float_t fKstepT[fKbinsT];
267 Float_t fKstepY[fKbinsY];
268 Float_t fKmeanT[fKbinsT];
269 Float_t fKmeanY[fKbinsY];
270 Float_t fKmiddleT[fKbinsT];
271 Float_t fKmiddleY[fKbinsY];
273 Float_t fQstepWeights;
274 Float_t fQmean[kQbinsWeights];
278 Float_t fTPCTOFboundry;
280 Float_t fSigmaCutTPC;
281 Float_t fSigmaCutTOF;
283 Float_t fMinSepPairEta;
284 Float_t fMinSepPairPhi;
285 Float_t fShareQuality;
286 Float_t fShareFraction;
288 Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;
290 Int_t fKtIndexL,fKtIndexH;
292 Int_t fQoIndexL,fQoIndexH;
293 Int_t fQsIndexL,fQsIndexH;
294 Int_t fQlIndexL,fQlIndexH;
298 Float_t fKT3transition;
299 Float_t fKT4transition;
302 /* bool LowQPairSwitch_E0E0[kMultLimitPbPb][kMultLimitPbPb];//!
303 bool LowQPairSwitch_E0E1[kMultLimitPbPb][kMultLimitPbPb];//!
304 bool LowQPairSwitch_E0E2[kMultLimitPbPb][kMultLimitPbPb];//!
305 bool LowQPairSwitch_E0E3[kMultLimitPbPb][kMultLimitPbPb];//!
306 bool LowQPairSwitch_E1E2[kMultLimitPbPb][kMultLimitPbPb];//!
307 bool LowQPairSwitch_E1E3[kMultLimitPbPb][kMultLimitPbPb];//!
308 bool LowQPairSwitch_E2E3[kMultLimitPbPb][kMultLimitPbPb];//!
310 bool NormQPairSwitch_E0E0[kMultLimitPbPb][kMultLimitPbPb];//!
311 bool NormQPairSwitch_E0E1[kMultLimitPbPb][kMultLimitPbPb];//!
312 bool NormQPairSwitch_E0E2[kMultLimitPbPb][kMultLimitPbPb];//!
313 bool NormQPairSwitch_E0E3[kMultLimitPbPb][kMultLimitPbPb];//!
314 bool NormQPairSwitch_E1E2[kMultLimitPbPb][kMultLimitPbPb];//!
315 bool NormQPairSwitch_E1E3[kMultLimitPbPb][kMultLimitPbPb];//!
316 bool NormQPairSwitch_E2E3[kMultLimitPbPb][kMultLimitPbPb];//!
319 Char_t fDefaultsCharSwitch[kMultLimitPbPb];//!
320 TArrayC *fLowQPairSwitch_E0E0[kMultLimitPbPb];//!
321 TArrayC *fLowQPairSwitch_E0E1[kMultLimitPbPb];//!
322 TArrayC *fLowQPairSwitch_E0E2[kMultLimitPbPb];//!
323 TArrayC *fLowQPairSwitch_E0E3[kMultLimitPbPb];//!
324 TArrayC *fLowQPairSwitch_E1E1[kMultLimitPbPb];//!
325 TArrayC *fLowQPairSwitch_E1E2[kMultLimitPbPb];//!
326 TArrayC *fLowQPairSwitch_E1E3[kMultLimitPbPb];//!
327 TArrayC *fLowQPairSwitch_E2E3[kMultLimitPbPb];//!
329 TArrayC *fNormQPairSwitch_E0E0[kMultLimitPbPb];//!
330 TArrayC *fNormQPairSwitch_E0E1[kMultLimitPbPb];//!
331 TArrayC *fNormQPairSwitch_E0E2[kMultLimitPbPb];//!
332 TArrayC *fNormQPairSwitch_E0E3[kMultLimitPbPb];//!
333 TArrayC *fNormQPairSwitch_E1E1[kMultLimitPbPb];//!
334 TArrayC *fNormQPairSwitch_E1E2[kMultLimitPbPb];//!
335 TArrayC *fNormQPairSwitch_E1E3[kMultLimitPbPb];//!
336 TArrayC *fNormQPairSwitch_E2E3[kMultLimitPbPb];//!
341 TH2D *fWeightmuonCorrection;
344 TH3F *fNormWeight[fKbinsT][fCentBins];
347 ClassDef(AliFourPion, 1);