1 #ifndef AliThreePionRadii_cxx
2 #define AliThreePionRadii_cxx
4 // Class AliThreePionRadii
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 "AliChaoticityEventCollection.h"
33 #include "AliThreePionRadii.h"
35 class AliThreePionRadii : public AliAnalysisTaskSE {
39 AliThreePionRadii(const Char_t *name);
40 virtual ~AliThreePionRadii();
41 AliThreePionRadii(const AliThreePionRadii &obj);
42 AliThreePionRadii &operator=(const AliThreePionRadii &obj);
45 virtual void UserCreateOutputObjects();
46 virtual void Exec(Option_t *option);
47 virtual void Terminate(Option_t *);
50 kPairLimit = 15000,//15000
51 kNormPairLimit = 45000,
52 kMultLimitPbPb = 2000,//2000
54 kMCarrayLimit = 110000,
60 kRmin = 2,// min radii for Momentum resolution calculations
61 kDENtypes = 1,// was (kRVALUES)*kNDampValues
66 static const Int_t fEDbins = 1;
67 static const Int_t fCentBins = 20;// 0-50%
68 static const Int_t fRVALUES = 10;//
71 Int_t GetNumRValues() const {return AliThreePionRadii::fRVALUES;}
72 Int_t GetNumCentBins() const {return AliThreePionRadii::fCentBins;}
73 Int_t GetNumEDBins() const {return AliThreePionRadii::fEDbins;}
74 void SetFSICorrelations(Bool_t legoCase=kTRUE, TH1D *temp1DSS[10]=0x0, TH1D *temp1DOS[10]=0x0);
76 void SetMCdecision(Bool_t mc) {fMCcase = mc;}
77 void SetPbPbCase(Bool_t pbpb) {fPbPbcase = pbpb;}
78 void SetGenerateSignal(Bool_t gen) {fGenerateSignal = gen;}
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;}
95 Bool_t AcceptPair(AliChaoticityTrackStruct, AliChaoticityTrackStruct);
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);
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
119 AliChaoticityEventCollection ***fEC; //!
120 AliChaoticityEventStruct *fEvt; //!
121 AliChaoticityTrackStruct *fTempStruct; //!
122 TRandom3* fRandomNumber; //!
126 //////////////////////////////
127 // histogram structures
130 TH1D *fExplicit3; //!
140 TH2D *fExplicit2; //!
141 TH2D *fExplicit2QW; //!
142 TH3D *fExplicit2ThreeD; //!
143 TProfile2D *fAvgP; //!
149 TH2D *fPIDpurityDen; //!
150 TH2D *fPIDpurityNum; //!
152 struct St_EDB {// SC structure
154 struct St6 ThreePT[5];
157 struct St_EDB EDB[fEDbins];
160 struct St_M MB[fCentBins];
163 struct St4 SC[kSCLimit3];
166 struct St3 Charge3[2];
167 struct St4 SC[kSCLimit2];
170 struct St2 Charge2[2];
172 struct St1 Charge1[2];//!
180 Bool_t fGenerateSignal;
181 Bool_t fPdensityPairCut;
192 Int_t fCentBinLowLimit;
193 Int_t fCentBinHighLimit;
197 Int_t fMultLimits[fCentBins+1];
202 Float_t fNormQcutLow[3];
203 Float_t fNormQcutHigh[3];
204 Float_t fKupperBound;
205 Float_t fQupperBound;
206 Float_t fQupperBoundWeights;
210 Float_t fQstepWeights;
211 Float_t fQmean[kQbinsWeights];
212 Float_t fQmeanPP[kQbinsWeightsPP];
216 Float_t fTPCTOFboundry;
218 Float_t fSigmaCutTPC;
219 Float_t fSigmaCutTOF;
221 Float_t fMinSepPairEta;
222 Float_t fMinSepPairPhi;
223 Float_t fShareQuality;
224 Float_t fShareFraction;
226 Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;
231 Char_t fDefaultsCharMult[kMultLimitPbPb];//!
232 Char_t fDefaultsCharSE[kPairLimit];//!
233 Char_t fDefaultsCharME[2*kPairLimit];//!
234 Int_t fDefaultsInt[kMultLimitPbPb];//!
235 TArrayI *fPairLocationSE[kMultLimitPbPb];//!
236 TArrayI *fPairLocationME[kMultLimitPbPb];//!
237 TArrayC *fTripletSkip1[kPairLimit];//!
238 TArrayC *fTripletSkip2[2*kPairLimit];//!
239 TArrayI *fOtherPairLocation1[2][kMultLimitPbPb];//!
240 TArrayI *fOtherPairLocation2[2][kMultLimitPbPb];//!
241 TArrayC *fNormPairSwitch[3][kMultLimitPbPb];//!
242 TArrayC *fPairSplitCut[4][kMultLimitPbPb];//!
244 AliChaoticityNormPairStruct *fNormPairs[3];//!
250 ClassDef(AliThreePionRadii, 1);