]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGDQ/dielectron/AliDielectronBtoJPSItoEleCDFfitFCN.h
Transition PWG3/dielectron --> PWGDQ/dielectron
[u/mrichter/AliRoot.git] / PWGDQ / dielectron / AliDielectronBtoJPSItoEleCDFfitFCN.h
1 #ifndef ALIDIELECTRONBTOJPSITOELECDFFITFCN_H\r
2 #define ALIDIELECTRONBTOJPSITOELECDFFITFCN_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 AliDielectronBtoJPSItoEleCDFfitFCN\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 \r
20 class TRandom3;\r
21 class TF1;\r
22 \r
23 enum IntegralType {kBkg, \r
24         kBkgNorm, \r
25         kSig, \r
26         kSigNorm};\r
27 \r
28 enum PtBins       {kallpt, \r
29         kptbin1,kptbin2,kptbin3,\r
30         kptbin4,kptbin5,kptbin6,\r
31         kptbin7,kptbin8,kptbin9};\r
32 //_________________________________________________________________________________________________\r
33 class AliDielectronBtoJPSItoEleCDFfitFCN : public TNamed {\r
34         public:\r
35                 //\r
36                 AliDielectronBtoJPSItoEleCDFfitFCN();\r
37                 AliDielectronBtoJPSItoEleCDFfitFCN(const AliDielectronBtoJPSItoEleCDFfitFCN& source); \r
38                 AliDielectronBtoJPSItoEleCDFfitFCN& operator=(const AliDielectronBtoJPSItoEleCDFfitFCN& source);  \r
39                 virtual ~AliDielectronBtoJPSItoEleCDFfitFCN();\r
40 \r
41                 Double_t EvaluateLikelihood(const Double_t* pseudoproperdecaytime,\r
42                                 const Double_t* invariantmass, const Int_t ncand) const;\r
43 \r
44                 Double_t GetResWeight()                    const { return fParameters[0]; }\r
45                 Double_t GetFPlus()                        const { return fParameters[1]; }\r
46                 Double_t GetFMinus()                       const { return fParameters[2]; }\r
47                 Double_t GetFSym()                         const { return fParameters[3]; } \r
48                 Double_t GetLamPlus()                      const { return fParameters[4]; }\r
49                 Double_t GetLamMinus()                     const { return fParameters[5]; }\r
50                 Double_t GetLamSym()                       const { return fParameters[6]; }\r
51                 Double_t GetFractionJpsiFromBeauty()       const { return fParameters[7]; }\r
52                 Double_t GetFsig()                         const { return fParameters[8]; }\r
53                 Double_t GetCrystalBallMmean()             const { return fParameters[9]; }\r
54                 Double_t GetCrystalBallNexp()              const { return fParameters[10]; }\r
55                 Double_t GetCrystalBallSigma()             const { return fParameters[11]; }\r
56                 Double_t GetCrystalBallAlpha()             const { return fParameters[12]; }\r
57                 Double_t GetCrystalBallNorm()              const { return fParameters[13]; }\r
58                 Double_t GetBkgInvMassNorm()               const { return fParameters[14]; }\r
59                 Double_t GetBkgInvMassMean()               const { return fParameters[15]; }\r
60                 Double_t GetBkgInvMassSlope()              const { return fParameters[16]; }  \r
61                 Double_t GetBkgInvMassConst()              const { return fParameters[17]; } \r
62                 Double_t GetNormGaus1ResFunc()             const { return fParameters[18]; }\r
63                 Double_t GetNormGaus2ResFunc()             const { return fParameters[19]; }\r
64                 Double_t GetIntegralMassSig()              const { return fintmMassSig; }\r
65                 Double_t GetIntegralMassBkg()              const { return fintmMassBkg; }\r
66                 const Double_t* GetResolutionConstants()   const { return fResolutionConstants; }\r
67                 Bool_t GetCrystalBallParam()               const { return fCrystalBallParam; }\r
68                 TH1F * GetCsiMcHisto()                     const { return fhCsiMC; }\r
69 \r
70                 // return pointer to likelihood functions  \r
71                 TF1* GetCsiMC(Double_t xmin, Double_t xmax);\r
72                 TF1* GetResolutionFunc(Double_t xmin, Double_t xmax);\r
73                 TF1* GetEvaluateCDFDecayTimeBkgDistr(Double_t xmin, Double_t xmax);\r
74                 TF1* GetEvaluateCDFDecayTimeSigDistr(Double_t xmin, Double_t xmax);\r
75 \r
76                 void SetResWeight (Double_t resWgt) {fParameters[0] = resWgt;}\r
77                 void SetFPlus(Double_t plus) {fParameters[1] = plus;}\r
78                 void SetFMinus(Double_t minus) {fParameters[2]  = minus;}\r
79                 void SetFSym(Double_t sym) {fParameters[3] = sym;}\r
80                 void SetLamPlus(Double_t lamplus) {fParameters[4] = lamplus;}\r
81                 void SetLamMinus(Double_t lamminus) {fParameters[5] = lamminus;}\r
82                 void SetLamSym(Double_t lamsym) {fParameters[6] = lamsym;}\r
83                 void SetFractionJpsiFromBeauty(Double_t B) {fParameters[7] = B;}\r
84                 void SetFsig(Double_t Fsig) {fParameters[8] = Fsig;}\r
85                 void SetCrystalBallMmean(Double_t CrystalBallMmean) {fParameters[9] = CrystalBallMmean;}\r
86                 void SetCrystalBallNexp(Double_t CrystalBallNexp) {fParameters[10] = CrystalBallNexp;}\r
87                 void SetCrystalBallSigma(Double_t CrystalBallSigma) {fParameters[11] = CrystalBallSigma;}\r
88                 void SetCrystalBallAlpha(Double_t CrystalBallAlpha) {fParameters[12] = CrystalBallAlpha;}\r
89                 void SetCrystalBallNorm(Double_t CrystalBallNorm) {fParameters[13] = CrystalBallNorm;}\r
90                 void SetBkgInvMassNorm(Double_t BkgInvMassNorm) {fParameters[14] = BkgInvMassNorm;}\r
91                 void SetBkgInvMassMean(Double_t BkgInvMassMean) {fParameters[15] = BkgInvMassMean;}\r
92                 void SetBkgInvMassSlope(Double_t BkgInvMassSlope) {fParameters[16] = BkgInvMassSlope;}\r
93                 void SetBkgInvMassConst(Double_t BkgInvMassConst) {fParameters[17] = BkgInvMassConst;}\r
94                 void SetNormGaus1ResFunc(Double_t norm1) {fParameters[18] = norm1;}\r
95                 void SetNormGaus2ResFunc(Double_t norm2) {fParameters[19] = norm2;}\r
96                 void SetAllParameters(const Double_t* parameters);\r
97                 void SetIntegralMassSig(Double_t integral) { fintmMassSig = integral; }\r
98                 void SetIntegralMassBkg(Double_t integral) { fintmMassBkg = integral; }\r
99                 void SetCsiMC(const TH1F* MCtemplate) {fhCsiMC = (TH1F*)MCtemplate->Clone("fhCsiMC");}\r
100 \r
101                 void SetResolutionConstants(Double_t* resolutionConst);\r
102                 void SetMassWndHigh(Double_t limit) { fMassWndHigh = TDatabasePDG::Instance()->GetParticle(443)->Mass() + limit ;}\r
103                 void SetMassWndLow(Double_t limit) { fMassWndLow = TDatabasePDG::Instance()->GetParticle(443)->Mass() - limit ;}\r
104                 void SetCrystalBallFunction(Bool_t okCB) {fCrystalBallParam = okCB;}\r
105 \r
106                 void ComputeMassIntegral(); \r
107 \r
108                 void ReadMCtemplates(Int_t BinNum);\r
109 \r
110                 void PrintStatus();\r
111 \r
112         private:  \r
113                 //\r
114                 Double_t fParameters[20];        /*  par[0]  = weightRes;                \r
115                                                      par[1]  = fPos;\r
116                                                      par[2]  = fNeg;\r
117                                                      par[3]  = fSym\r
118                                                      par[4]  = fOneOvLamPlus;\r
119                                                      par[5]  = fOneOvLamMinus;\r
120                                                      par[6]  = fOneOvLamSym;\r
121                                                      par[7]  = fFractionJpsiFromBeauty;\r
122                                                      par[8]  = fFsig;\r
123                                                      par[9]  = fCrystalBallMmean;\r
124                                                      par[10] = fCrystalBallNexp;\r
125                                                      par[11] = fCrystalBallSigma;\r
126                                                      par[12] = fCrystalBallAlpha;\r
127                                                      par[13] = fCrystalBallNorm;\r
128                                                      par[14] = fBkgNorm;\r
129                                                      par[15] = fBkgMean; \r
130                                                      par[16] = fBkgSlope;\r
131                                                      par[17] = fBkgConst;\r
132                                                      par[18] = norm1Gaus;\r
133                                                      par[19] = norm2Gaus;*/\r
134 \r
135 \r
136                 Double_t fFPlus;                     // parameters of the log-likelihood function\r
137                 Double_t fFMinus;                    // Slopes of the x distributions of the background \r
138                 Double_t fFSym;                      // functions \r
139 \r
140                 Double_t fintmMassSig;               // integral of invariant mass distribution for the signal\r
141                 Double_t fintmMassBkg;               // integral of invariant mass distribution for the bkg\r
142 \r
143                 TH1F *fhCsiMC;                       // X distribution used as MC template for JPSI from B\r
144                 Double_t fResolutionConstants[4];    // constants for the parametrized resolution function R(X)\r
145                 Double_t fMassWndHigh;               // JPSI Mass window higher limit\r
146                 Double_t fMassWndLow;                // JPSI Mass window lower limit\r
147                 Bool_t fCrystalBallParam;            // Boolean to switch to Crystall Ball parameterisation\r
148 \r
149                 ////\r
150 \r
151                 Double_t EvaluateCDFfunc(Double_t x, Double_t m) const ;\r
152                 Double_t EvaluateCDFfuncNorm(Double_t x, Double_t m) const ;\r
153 \r
154                 ////\r
155 \r
156                 Double_t EvaluateCDFfuncSignalPart(Double_t x, Double_t m) const ;      // Signal part \r
157                 Double_t EvaluateCDFDecayTimeSigDistr(Double_t x) const ;\r
158                 Double_t EvaluateCDFDecayTimeSigDistrFunc(const Double_t* x, const Double_t */*par*/) const { return EvaluateCDFDecayTimeSigDistr(x[0]);}\r
159                 Double_t EvaluateCDFInvMassSigDistr(Double_t m) const ;\r
160                 Double_t EvaluateCDFfuncBkgPart(Double_t x,Double_t m) const ;          // Background part\r
161                 Double_t EvaluateCDFDecayTimeBkgDistr(Double_t x) const ;\r
162                 Double_t EvaluateCDFDecayTimeBkgDistrFunc(const Double_t* x, const Double_t */*par*/) const { return EvaluateCDFDecayTimeBkgDistr(x[0]);}\r
163                 Double_t EvaluateCDFInvMassBkgDistr(Double_t m) const ;\r
164 \r
165                 ////\r
166 \r
167                 Double_t FunB(Double_t x) const;\r
168                 Double_t FunP(Double_t x) const ;\r
169                 Double_t CsiMC(Double_t x) const;\r
170                 Double_t CsiMCfunc(const Double_t* x, const Double_t */*par*/) const {  return CsiMC(x[0]);}\r
171                 Double_t FunBkgPos(Double_t x) const ;\r
172                 Double_t FunBkgNeg(Double_t x) const ;\r
173                 Double_t FunBkgSym(Double_t x) const ;\r
174                 Double_t ResolutionFunc(Double_t x) const ;\r
175                 Double_t ResolutionFuncf(const Double_t* x, const Double_t */*par*/) const { return ResolutionFunc(x[0]);}\r
176 \r
177                 ClassDef (AliDielectronBtoJPSItoEleCDFfitFCN,1);         // Unbinned log-likelihood fit \r
178 \r
179 };\r
180 \r
181 #endif\r