1 //--------------------------------------------------------------------------
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
8 // Copyright Information:
9 // Copyright (C) 2001 Brunel University, University of Wisconsin
11 // Module: EvtGen/EvtBtoXsgammaKagan.hh
14 // Implimentation of the Kagan-Neubert model for non-resonant
15 // B->Xs,gamma decays.
17 // Modification history:
19 // Jane Tinslay, Francesca Di Lodovico March 27, 2001 Module created
21 //------------------------------------------------------------------------
23 #ifndef EVTBTOXSGAMMAKAGAN_HH
24 #define EVTBTOXSGAMMAKAGAN_HH
27 #include "EvtGenModels/EvtBtoXsgammaAbsModel.hh"
29 class EvtBtoXsgammaKagan : public EvtBtoXsgammaAbsModel {
33 EvtBtoXsgammaKagan() {}
35 virtual ~EvtBtoXsgammaKagan();
37 void init(int, double*);
39 void computeHadronicMass(int, double*);
41 void getDefaultHadronicMass();
43 double GetMass(int code);
45 double CalcAlphaS(double);
47 void CalcWilsonCoeffs();
99 std::vector<double> _mHVect;
101 static double ReG(double);
102 static double ImG(double);
103 static double s77(double);
104 static double s88(double, double, double);
105 static double s78(double);
106 static double s22Func(double var, const std::vector<double> &coeffs);
107 static double s27Func(double var, const std::vector<double> &coeffs);
109 static double Delta(double, double);
110 static double DeltaFermiFunc(double, const std::vector<double> &coeffs1, const std::vector<double> &coeffs2, const std::vector<double> &coeffs3);
111 static double s77FermiFunc(double, const std::vector<double> &coeffs1, const std::vector<double> &coeffs2);
112 static double s88FermiFunc(double, const std::vector<double> &coeffs1, const std::vector<double> &coeffs2, const std::vector<double> &coeffs3);
113 static double s78FermiFunc(double, const std::vector<double> &coeffs1, const std::vector<double> &coeffs2);
114 static double s22FermiFunc(double, std::vector<double> &coeffs);
115 static double s27FermiFunc(double, std::vector<double> &coeffs);
116 static double s28FermiFunc(double, std::vector<double> &coeffs);
117 static double GetArrayVal(double, double, double, double, std::vector<double>);
118 static double sFermiFunc(double, const std::vector<double> &coeffs1, const std::vector<double> &coeffs2,
119 const std::vector<double> &coeffs3, const std::vector<double> &coeffs4);
120 static double FermiFunc(double, const std::vector<double> &coeffs);
121 static double diLogFunc(double);
122 static double diLogMathematica(double);
123 double *massHad; double *brHad;
124 static double intervalMH;