2 //////////////////////////////////////////////////////////////////////
4 // Module: EvtVubBLNPHybrid.hh
7 // tripleDiff from BLNPHybrid's notebook, based on hep-ph/0504071
10 // Class to generate inclusive B to X_u l nu decays.
11 // This class is based on EvtVubBLNP by Sheila Mclachlin with an update to
12 // generate the inclusive decays in such a way that the right
13 // mix of inclusive and exclusive decays is obtained.
16 // - A set of weights (for bins in the kinematic variables mX, q2, El)
17 // is read from DECAY.DEC. This set of weights must be consistent
18 // with the other parameters specified (excl. BF, non-res BF, mb, a).
19 // - If no binning/weights are specified in DECAY.DEC the hybrid
20 // reweighting is not activated
23 //////////////////////////////////////////////////////////////////
26 #ifndef EVTVUBBLNPHYBRID_HH
27 #define EVTVUBBLNPHYBRID_HH
30 #include "EvtGenBase/EvtDecayIncoherent.hh"
34 class EvtVubBLNPHybrid:public EvtDecayIncoherent {
39 virtual ~EvtVubBLNPHybrid();
41 std::string getName();
43 EvtDecayBase* clone();
49 void decay(EvtParticle *Bmeson);
51 void readWeights(int startArg=0);
53 double getWeight(double mX, double q2, double El);
56 //Input for hybrid modell
57 enum { nParameters = 10, nVariables = 3 };
74 // Shape function parameters
98 // Perturbative quantities
125 std::vector<double> gvars;
127 double rate3(double Pp, double Pl, double Pm);
128 double F1(double Pp, double Pm, double muh, double mui, double mubar, double doneJS, double done1);
129 double F2(double Pp, double Pm, double muh, double mui, double mubar, double done3);
130 double F3(double Pp, double Pm, double muh, double mui, double mubar, double done2);
131 double DoneJS(double Pp, double Pm, double mui);
132 double Done1(double Pp, double Pm, double mui);
133 double Done2(double Pp, double Pm, double mui);
134 double Done3(double Pp, double Pm, double mui);
135 static double IntJS(double what, const std::vector<double> &vars);
136 static double Int1(double what, const std::vector<double> &vars);
137 static double Int2(double what, const std::vector<double> &vars);
138 static double Int3(double what, const std::vector<double> &vars);
139 static double g1(double w, const std::vector<double> &vars);
140 static double g2(double w, const std::vector<double> &vars);
141 static double g3(double w, const std::vector<double> &vars);
142 static double Shat(double w, const std::vector<double> &vars);
143 static double Mzero(double muf, double mu, double mupisq, const std::vector<double> &vars);
148 double myfunction(double w, double Lbar, double mom2);
149 double myfunctionBIK(double w, double Lbar, double mom2);
150 double dU1nlo(double muh, double mui);
151 double U1lo(double muh, double mui);
152 double Sfun(double mu1, double mu2, double epsilon);
153 double S0(double a1, double r);
154 double S1(double a1, double r);
155 double S2(double a1, double r);
156 double aGamma(double mu1, double mu2, double epsilon);
157 double agp(double mu1, double mu2, double epsilon);
158 double alo(double muh, double mui);
159 double anlo(double muh, double mui); // d/depsilon of aGamma
160 static double alphas(double mu, const std::vector<double> &vars);
161 double PolyLog(double v, double z);
162 static double Gamma(double z);
163 static double Gamma(double a, double x);
164 static double gamser(double a, double x, double LogGamma);
165 static double gammcf(double a, double x, double LogGamma);
166 double findBLNPWhat();
167 std::vector<double> _pf;