]>
Commit | Line | Data |
---|---|---|
7b54a483 | 1 | #ifndef ALIBTOJPSITOELECDFFITFCN_H\r |
2 | #define ALIBTOJPSITOELECDFFITFCN_H\r | |
3 | /* Copyright(c) 1998-2009, ALICE Experiment at CERN, All rights reserved. *\r | |
4 | * See cxx source for full Copyright notice */\r | |
5 | \r | |
6 | //_________________________________________________________________________\r | |
7 | // Class AliBtoJPSItoEleCDFfitFCN\r | |
8 | // Definition of main function used in \r | |
9 | // unbinned log-likelihood fit for\r | |
10 | // the channel B -> JPsi + X -> e+e- + X\r | |
11 | // \r | |
12 | // Origin: C.Di Giglio\r | |
13 | // Contact: Carmelo.Digiglio@ba.infn.it , Giuseppe.Bruno@ba.infn.it\r | |
14 | //_________________________________________________________________________\r | |
15 | \r | |
16 | #include <TNamed.h>\r | |
17 | #include <TDatabasePDG.h>\r | |
18 | #include "TH1F.h"\r | |
19 | #include "TMath.h"\r | |
f9fd1412 | 20 | #include "TRandom3.h"\r |
7b54a483 | 21 | \r |
22 | enum IntegralType {kBkg, \r | |
23 | kBkgNorm, \r | |
24 | kSig, \r | |
25 | kSigNorm};\r | |
26 | \r | |
27 | enum PtBins {kallpt, \r | |
28 | kptbin1,kptbin2,kptbin3,\r | |
29 | kptbin4,kptbin5,kptbin6,\r | |
30 | kptbin7,kptbin8,kptbin9};\r | |
31 | //_________________________________________________________________________________________________\r | |
32 | class AliBtoJPSItoEleCDFfitFCN : public TNamed {\r | |
33 | public:\r | |
34 | //\r | |
35 | AliBtoJPSItoEleCDFfitFCN();\r | |
36 | AliBtoJPSItoEleCDFfitFCN(const AliBtoJPSItoEleCDFfitFCN& source); \r | |
37 | AliBtoJPSItoEleCDFfitFCN& operator=(const AliBtoJPSItoEleCDFfitFCN& source); \r | |
38 | virtual ~AliBtoJPSItoEleCDFfitFCN();\r | |
39 | \r | |
40 | Double_t EvaluateLikelihood(const Double_t* pseudoproperdecaytime,\r | |
41 | const Double_t* invariantmass, const Int_t ncand);\r | |
42 | \r | |
f9fd1412 | 43 | Double_t GetFPlus() const { return fFPlus; }\r |
44 | Double_t GetFMinus() const { return fFMinus; }\r | |
45 | Double_t GetFSym() const { return fFSym; }\r | |
46 | Double_t GetRadius() const { return fParameters[0]; }\r | |
47 | Double_t GetTheta() const { return fParameters[1]; }\r | |
48 | Double_t GetPhi() const { return fParameters[2]; }\r | |
49 | Double_t GetLamPlus() const { return fParameters[3]; }\r | |
50 | Double_t GetLamMinus() const { return fParameters[4]; }\r | |
51 | Double_t GetLamSym() const { return fParameters[5]; }\r | |
52 | Double_t GetMassSlope() const { return fParameters[6]; }\r | |
53 | Double_t GetFractionJpsiFromBeauty() const { return fParameters[7]; }\r | |
54 | Double_t GetFsig() const { return fParameters[8]; }\r | |
55 | Double_t GetCrystalBallMmean() const { return fParameters[9]; }\r | |
56 | Double_t GetCrystalBallNexp() const { return fParameters[10]; }\r | |
57 | Double_t GetCrystalBallSigma() const { return fParameters[11]; }\r | |
58 | Double_t GetCrystalBallAlpha() const { return fParameters[12]; }\r | |
59 | Double_t GetCrystalBallNorm() const { return fParameters[13]; }\r | |
60 | Double_t GetSigmaResol() const { return fParameters[14]; }\r | |
61 | Double_t GetNResol() const { return fParameters[15]; }\r | |
62 | Double_t GetIntegral() const { return fIntegral; }\r | |
63 | Double_t GetIntegralFunB() const { return fintxFunB; }\r | |
64 | Double_t GetIntegralBkgPos() const { return fintxDecayTimeBkgPos; }\r | |
65 | Double_t GetIntegralBkgNeg() const { return fintxDecayTimeBkgNeg; }\r | |
66 | Double_t GetIntegralBkgSym() const { return fintxDecayTimeBkgSym; }\r | |
67 | Double_t GetIntegralMassSig() const { return fintmMassSig; }\r | |
68 | Double_t GetIntegralRes() const { return fintxRes; }\r | |
69 | Double_t GetIntegralMassBkg() const { return fintmMassBkg; }\r | |
70 | Bool_t GetCrystalBallParam() const { return fCrystalBallParam; }\r | |
7b54a483 | 71 | \r |
72 | void SetFPlus(Double_t plus) {fFPlus = plus;}\r | |
73 | void SetFMinus(Double_t minus) {fFMinus = minus;}\r | |
74 | void SetFSym(Double_t sym) {fFSym = sym;}\r | |
75 | void SetRadius(Double_t radius) {fParameters[0] = radius;}\r | |
76 | void SetTheta(Double_t theta) {fParameters[1] = theta;}\r | |
77 | void SetPhi(Double_t phi) {fParameters[2] = phi;}\r | |
78 | void SetLamPlus(Double_t lamplus) {fParameters[3] = lamplus;}\r | |
79 | void SetLamMinus(Double_t lamminus) {fParameters[4] = lamminus;}\r | |
80 | void SetLamSym(Double_t lamsym) {fParameters[5] = lamsym;}\r | |
81 | void SetMassSlope(Double_t slope) {fParameters[6] = slope;}\r | |
82 | void SetFractionJpsiFromBeauty(Double_t B) {fParameters[7] = B;}\r | |
83 | void SetFsig(Double_t Fsig) {fParameters[8] = Fsig;}\r | |
84 | void SetCrystalBallMmean(Double_t CrystalBallMmean) {fParameters[9] = CrystalBallMmean;}\r | |
85 | void SetCrystalBallNexp(Double_t CrystalBallNexp) {fParameters[10] = CrystalBallNexp;}\r | |
86 | void SetCrystalBallSigma(Double_t CrystalBallSigma) {fParameters[11] = CrystalBallSigma;}\r | |
87 | void SetCrystalBallAlpha(Double_t CrystalBallAlpha) {fParameters[12] = CrystalBallAlpha;}\r | |
f9fd1412 | 88 | void SetCrystalBallNorm(Double_t CrystalBallNorm) {fParameters[13] = CrystalBallNorm;}\r |
89 | void SetSigmaResol(Double_t SigmaResol) {fParameters[14] = SigmaResol;}\r | |
90 | void SetNResol(Double_t NResol) {fParameters[15] = NResol;}\r | |
7b54a483 | 91 | \r |
92 | void SetAllParameters(const Double_t* parameters);\r | |
f9fd1412 | 93 | void SetIntegral(Double_t integral) { fIntegral = integral; }\r |
94 | void SetIntegralFunB(Double_t integral) { fintxFunB = integral; }\r | |
95 | void SetIntegralBkgPos(Double_t integral) { fintxDecayTimeBkgPos = integral; }\r | |
96 | void SetIntegralBkgNeg(Double_t integral) { fintxDecayTimeBkgNeg = integral; }\r | |
97 | void SetIntegralBkgSym(Double_t integral) { fintxDecayTimeBkgSym = integral; }\r | |
98 | void SetIntegralMassSig(Double_t integral) { fintmMassSig = integral; }\r | |
99 | void SetIntegralRes(Double_t integral) { fintxRes = integral; }\r | |
100 | void SetIntegralMassBkg(Double_t integral) { fintmMassBkg = integral; }\r | |
101 | \r | |
7b54a483 | 102 | void SetCsiMC(const TH1F* MCtemplate) {fhCsiMC = (TH1F*)MCtemplate->Clone("fhCsiMC");}\r |
f9fd1412 | 103 | \r |
104 | void SetResolutionConstants();\r | |
105 | void SetMassWndHigh(Double_t limit) { fMassWndHigh = TDatabasePDG::Instance()->GetParticle(443)->Mass() + limit ;}\r | |
106 | void SetMassWndLow(Double_t limit) { fMassWndLow = TDatabasePDG::Instance()->GetParticle(443)->Mass() - limit ;}\r | |
107 | void SetCrystalBallFunction(Bool_t okCB) {fCrystalBallParam = okCB;}\r | |
7b54a483 | 108 | \r |
109 | void ConvertFromSpherical() { fFPlus = TMath::Power((fParameters[0]*TMath::Cos(fParameters[1])),2.);\r | |
110 | fFMinus = TMath::Power((fParameters[0]*TMath::Sin(fParameters[1])*TMath::Sin(fParameters[2])),2.);\r | |
111 | fFSym = TMath::Power((fParameters[0]*TMath::Sin(fParameters[1])*TMath::Cos(fParameters[2])),2.);} \r | |
112 | \r | |
113 | void ComputeIntegral(); \r | |
114 | \r | |
115 | void ReadMCtemplates(Int_t BinNum);\r | |
116 | \r | |
117 | void PrintStatus();\r | |
118 | \r | |
119 | private: \r | |
120 | //\r | |
f9fd1412 | 121 | Double_t fParameters[16]; /* par[0] = fRadius; \r |
7b54a483 | 122 | par[1] = fTheta;\r |
123 | par[2] = fPhi;\r | |
124 | par[3] = fOneOvLamPlus;\r | |
125 | par[4] = fOneOvLamMinus;\r | |
126 | par[5] = fOneOvLamSym;\r | |
127 | par[6] = fMassBkgSlope;\r | |
128 | par[7] = fFractionJpsiFromBeauty;\r | |
129 | par[8] = fFsig;\r | |
130 | par[9] = fCrystalBallMmean;\r | |
131 | par[10] = fCrystalBallNexp;\r | |
132 | par[11] = fCrystalBallSigma;\r | |
f9fd1412 | 133 | par[12] = fCrystalBallAlpha;\r |
134 | par[13] = fCrystalBallNorm;\r | |
135 | par[14] = fSigmaResol;\r | |
136 | par[15] = fNResol; */\r | |
137 | \r | |
138 | \r | |
139 | Double_t fFPlus; // parameters of the log-likelihood function\r | |
140 | Double_t fFMinus; // Slopes of the x distributions of the background \r | |
141 | Double_t fFSym; // functions \r | |
142 | \r | |
143 | Double_t fIntegral; // integral values of log-likelihood function terms\r | |
144 | Double_t fintxFunB;\r | |
145 | Double_t fintxDecayTimeBkgPos;\r | |
146 | Double_t fintxDecayTimeBkgNeg;\r | |
147 | Double_t fintxDecayTimeBkgSym;\r | |
148 | Double_t fintmMassSig;\r | |
149 | Double_t fintxRes;\r | |
150 | Double_t fintmMassBkg;\r | |
151 | TH1F *fhCsiMC; // X distribution used as MC template for JPSI from B\r | |
152 | Double_t fResolutionConstants[5]; // constants for the parametrized resolution function R(X)\r | |
153 | Double_t fMassWndHigh; // JPSI Mass window higher limit\r | |
154 | Double_t fMassWndLow; // JPSI Mass window lower limit\r | |
155 | Bool_t fCrystalBallParam; // Boolean to switch to Crystall Ball parameterisation\r | |
7b54a483 | 156 | \r |
157 | ////\r | |
158 | \r | |
159 | Double_t EvaluateCDFfunc(Double_t x, Double_t m) const ;\r | |
160 | \r | |
161 | Double_t EvaluateCDFfuncNorm(Double_t x, Double_t m) const ;\r | |
162 | \r | |
163 | ////\r | |
164 | \r | |
165 | Double_t EvaluateCDFfuncSignalPart(Double_t x, Double_t m) const ; // Signal part \r | |
166 | \r | |
167 | Double_t EvaluateCDFDecayTimeSigDistr(Double_t x) const ;\r | |
168 | \r | |
169 | Double_t EvaluateCDFInvMassSigDistr(Double_t m) const ;\r | |
170 | \r | |
171 | Double_t EvaluateCDFfuncBkgPart(Double_t x,Double_t m) const ; // Background part\r | |
172 | \r | |
173 | Double_t EvaluateCDFDecayTimeBkgDistr(Double_t x) const ;\r | |
174 | \r | |
175 | Double_t EvaluateCDFInvMassBkgDistr(Double_t m) const ;\r | |
176 | \r | |
177 | ////\r | |
178 | \r | |
179 | Double_t FunB(Double_t x) const ;\r | |
180 | \r | |
181 | Double_t FunP(Double_t x) const ;\r | |
182 | \r | |
183 | Double_t CsiMC(Double_t x) const ;\r | |
184 | \r | |
185 | Double_t FunBkgPos(Double_t x) const ;\r | |
186 | \r | |
187 | Double_t FunBkgNeg(Double_t x) const ;\r | |
188 | \r | |
189 | Double_t FunBkgSym(Double_t x) const ;\r | |
190 | \r | |
191 | Double_t ResolutionFunc(Double_t x) const ;\r | |
192 | //\r | |
f9fd1412 | 193 | ClassDef (AliBtoJPSItoEleCDFfitFCN,1); // Unbinned log-likelihood fit \r |
7b54a483 | 194 | \r |
195 | };\r | |
196 | \r | |
197 | #endif\r |