]>
Commit | Line | Data |
---|---|---|
83b33650 | 1 | #ifndef ALIHBTCORRECTCORRELFCTN_H |
2 | #define ALIHBTCORRECTCORRELFCTN_H | |
3 | //____________________ | |
4 | /////////////////////////////////////////////////////// | |
5 | // // | |
6 | // AliHBTCorrectQInvCorrelFctn // | |
7 | // // | |
8 | // Class for calculating Q Invariant correlation // | |
9 | // taking to the account resolution of the // | |
10 | // detector and coulomb effects. // | |
11 | // // | |
12 | /////////////////////////////////////////////////////// | |
13 | ||
14 | #include "AliHBTFunction.h" | |
15 | ||
16 | class AliHBTCorrectQInvCorrelFctn: public AliHBTOnePairFctn1D | |
17 | { | |
18 | public: | |
19 | AliHBTCorrectQInvCorrelFctn(const char* name = "qinvcorrectedCF", | |
20 | const char* title= "Corrected Q_{inv} Correlation Fonction"); | |
21 | ||
22 | AliHBTCorrectQInvCorrelFctn(const char* name, const char* title, | |
23 | Int_t nbins, Float_t maxXval, Float_t minXval); | |
24 | ||
25 | AliHBTCorrectQInvCorrelFctn(TH1D* measqinv, | |
26 | const char* name = "qinvcorrectedCF", | |
27 | const char* title= "Corrected Q_{inv} Correlation Fonction"); | |
28 | virtual ~AliHBTCorrectQInvCorrelFctn(); | |
29 | void SetInitialValues(Double_t lambda, Double_t r); | |
30 | void Init(); | |
31 | void ProcessSameEventParticles(AliHBTPair* pair);//process particles from same event (real pair) | |
32 | void ProcessDiffEventParticles(AliHBTPair* pair);//process particles coming from different events (mixed pairs) | |
33 | void SetMeasuredHistogram(TH1D* meas){fMeasCorrelFctn = meas;} | |
34 | TH1* GetResult();//returns the result histogram | |
35 | Double_t GetRadius()const{ return TMath::Sqrt(fR2);}//returns assumed radius | |
36 | Double_t GetLambda()const{ return fLambda;}//retutrns assumed intercept parameter | |
37 | void SetRadiusConvergenceTreshold(Double_t ct){fRConvergenceTreshold=ct;}//if fitted and assumed R us different less then that number con | |
38 | void SetLambdaConvergenceTreshold(Double_t ct){fLambdaConvergenceTreshold=ct;} | |
39 | Bool_t IsConverged(); | |
40 | void Fit(); | |
41 | Double_t GetFittedRadius(); | |
42 | Double_t GetFittedLambda(); | |
43 | void WriteAll(); | |
44 | void SetMeasNum(TH1D* measnum){fMeasNumer = measnum;} | |
45 | void SetMeasDen(TH1D* h){fMeasDenom = h;} | |
46 | void MakeMeasCF(); | |
47 | protected: | |
48 | virtual void BuildHistos(Int_t nbins, Float_t max, Float_t min); | |
49 | Double_t GetCoulombCorrection(AliHBTPair* pair){return 1.0;} | |
50 | Double_t GetValue(AliHBTPair * pair){return pair->GetQInv();} | |
51 | void Smear(AliHBTPair* pair,AliHBTPair& smeared); | |
52 | void Smear(AliHBTParticle* part, AliHBTParticle* smeared); | |
53 | Double_t GetModelValue(Double_t qinv); | |
54 | ||
55 | //Our ideal numerator | |
56 | TH1D* fMeasCorrelFctn; | |
57 | TH1D* fMeasNumer; | |
58 | TH1D* fMeasDenom; | |
59 | ||
60 | TH1D* fSmearedNumer; //! Numerator of smeard q | |
61 | TH1D* fSmearedDenom; //! Denominator of smeard q | |
62 | ||
63 | //Parameters of Pt RMS | |
64 | //linear dependence dPt/Pt from Pt itself | |
65 | Float_t fDPtOverPtRMS; //RMS of dPt/Pt | |
66 | ||
67 | //We assume that RMS of Theta and Phisangle depends on Pt Like A+B*(Pt)^Alpha | |
68 | //Idea copied from Star HBT Maker (Fabrice Retiere) | |
69 | //Parameters comes from Monte Carlo Resolution Analysis | |
70 | ||
71 | Float_t fThetaA; //"A" parameter of theta RMS dependence | |
72 | Float_t fThetaB; //"B" parameter of theta RMS dependence | |
73 | Float_t fThetaAlpha; //"Alpha" parameter (power) of theta RMS dependence | |
74 | ||
75 | Float_t fPhiA;//"A" parameter of phi RMS dependence | |
76 | Float_t fPhiB;//"B" parameter of phi RMS dependence | |
77 | Float_t fPhiAlpha;//"Alpha" parameter (power) of phi RMS dependence | |
78 | ||
79 | Double_t fR2;//square of radius | |
80 | Double_t fLambda;//Interception parameter | |
81 | ||
82 | Double_t fFittedR;//fitted radius | |
83 | Double_t fFittedLambda;//fitted Interception parameter | |
84 | ||
85 | Float_t fRConvergenceTreshold; | |
86 | Float_t fLambdaConvergenceTreshold; | |
87 | private: | |
88 | public: | |
89 | ClassDef(AliHBTCorrectQInvCorrelFctn,1) | |
90 | }; | |
91 | ||
92 | inline | |
93 | Double_t AliHBTCorrectQInvCorrelFctn::GetModelValue(Double_t qinv) | |
94 | { | |
95 | //factor 0.038936366329 conected with units change GeV<->SI | |
96 | return 1.0 + fLambda*TMath::Exp(-fR2*qinv*qinv/0.038936366329); | |
97 | } | |
98 | ||
99 | //____________________ | |
100 | /////////////////////////////////////////////////////// | |
101 | // // | |
102 | // AliHBTCorrectQ3DCorrelFctn // | |
103 | // // | |
104 | // Class for calculating Q Invariant correlation // | |
105 | // taking to the account resolution of the // | |
106 | // detector and coulomb effects. // | |
107 | // // | |
108 | /////////////////////////////////////////////////////// | |
109 | ||
110 | class AliHBTCorrectQ3DCorrelFctn: public AliHBTOnePairFctn3D | |
111 | { | |
112 | public: | |
113 | AliHBTCorrectQ3DCorrelFctn(const char* name = "qinvcorrectedCF", | |
114 | const char* title= "Corrected Q_{inv} Correlation Fonction"); | |
115 | virtual ~AliHBTCorrectQ3DCorrelFctn(); | |
116 | ||
117 | protected: | |
118 | TH3D* fMeasCorrelFctn; | |
119 | ||
120 | TH3D* fSmearedNumer; //! Numerator of smeard q | |
121 | TH3D* fSmearedDenom; //! Denominator of smeard q | |
122 | TH3D* fMeasNumer; //! Numerator of ideal q calculated on basis of model equation | |
123 | TH3D* fMeasDenom; //! Denominator of ideal q calculated on basis of model equation | |
124 | ||
125 | ||
126 | private: | |
127 | ||
128 | public: | |
129 | ClassDef(AliHBTCorrectQ3DCorrelFctn,1) | |
130 | }; | |
131 | ||
132 | #endif |