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
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
12 // Origin: C.Di Giglio
\r
13 // Contact: Carmelo.Digiglio@ba.infn.it , Giuseppe.Bruno@ba.infn.it
\r
14 //_________________________________________________________________________
\r
17 #include <TDatabasePDG.h>
\r
23 enum IntegralType {kBkg,
\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
36 AliDielectronBtoJPSItoEleCDFfitFCN();
\r
37 AliDielectronBtoJPSItoEleCDFfitFCN(const AliDielectronBtoJPSItoEleCDFfitFCN& source);
\r
38 AliDielectronBtoJPSItoEleCDFfitFCN& operator=(const AliDielectronBtoJPSItoEleCDFfitFCN& source);
\r
39 virtual ~AliDielectronBtoJPSItoEleCDFfitFCN();
\r
41 Double_t EvaluateLikelihood(const Double_t* pseudoproperdecaytime,
\r
42 const Double_t* invariantmass, const Int_t ncand) const;
\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
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
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
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
106 void ComputeMassIntegral();
\r
108 void ReadMCtemplates(Int_t BinNum);
\r
110 void PrintStatus();
\r
114 Double_t fParameters[20]; /* par[0] = weightRes;
\r
118 par[4] = fOneOvLamPlus;
\r
119 par[5] = fOneOvLamMinus;
\r
120 par[6] = fOneOvLamSym;
\r
121 par[7] = fFractionJpsiFromBeauty;
\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
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
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
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
151 Double_t EvaluateCDFfunc(Double_t x, Double_t m) const ;
\r
152 Double_t EvaluateCDFfuncNorm(Double_t x, Double_t m) const ;
\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
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
177 ClassDef (AliDielectronBtoJPSItoEleCDFfitFCN,1); // Unbinned log-likelihood fit
\r