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"
34 class AliThreePionRadii : public AliAnalysisTaskSE {
38 AliThreePionRadii(const Char_t *name);
39 virtual ~AliThreePionRadii();
40 AliThreePionRadii(const AliThreePionRadii &obj);
41 AliThreePionRadii &operator=(const AliThreePionRadii &obj);
44 virtual void UserCreateOutputObjects();
45 virtual void Exec(Option_t *option);
46 virtual void Terminate(Option_t *);
49 kPairLimit = 15000,//15000
50 kNormPairLimit = 45000,//45000
51 kMultLimitPbPb = 2000,//2000
52 kMultLimitPP = 300,//300
53 kMCarrayLimit = 110000,//110000
59 kRmin = 2,// min radii for Momentum resolution calculations
60 kDENtypes = 1,// was (kRVALUES)*kNDampValues
65 static const Int_t fEDbins = 3;
66 static const Int_t fCentBins = 20;// 0-100% PbPb, pPb, pp
67 static const Int_t fRVALUES = 10;//
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);
75 void SetMCdecision(Bool_t mc) {fMCcase = mc;}
76 void SetPbPbCase(Bool_t pbpb) {fPbPbcase = pbpb;}
77 void SetGenerateSignal(Bool_t gen) {fGenerateSignal = gen;}
78 void SetNumKt3Bins(Int_t kt3bins) {fKt3bins = kt3bins;}
79 void SetV0Mbinning(Bool_t V0Mbinning) {fV0Mbinning = V0Mbinning;}
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;}
90 void SetTriggerType(Int_t tt) {fTriggerType = tt;}
97 Bool_t AcceptPair(AliChaoticityTrackStruct*, AliChaoticityTrackStruct*);
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);
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
121 AliChaoticityEventCollection ***fEC; //!
122 AliChaoticityEventStruct *fEvt; //!
123 AliChaoticityTrackStruct *fTempStruct; //!
124 TRandom3* fRandomNumber; //!
128 //////////////////////////////
129 // histogram structures
140 TH2D *fExplicit2; //!
141 TH2D *fExplicit2QW; //!
142 TProfile2D *fAvgP; //!
149 TH2D *fPIDpurityDen; //!
150 TH3D *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 fGeneratorOnly;
182 Bool_t fPdensityPairCut;
195 Int_t fCentBinLowLimit;
196 Int_t fCentBinHighLimit;
201 Int_t fMultLimits[fCentBins+1];
206 Float_t fNormQcutLow[3];
207 Float_t fNormQcutHigh[3];
208 Float_t fKupperBound;
209 Float_t fQupperBound;
214 Float_t fTPCTOFboundry;
216 Float_t fSigmaCutTPC;
217 Float_t fSigmaCutTOF;
219 Float_t fMinSepPairEta;
220 Float_t fMinSepPairPhi;
221 Float_t fShareQuality;
222 Float_t fShareFraction;
224 Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;
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];//!
242 AliChaoticityNormPairStruct *fNormPairs[3];//!
248 ClassDef(AliThreePionRadii, 1);