BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVubNLO.hh
Go to the documentation of this file.
1//--------------------------------------------------------------------------
2//
3// Environment:
4// This software is part of the EvtGen package developed jointly
5// for the BaBar and CLEO collaborations. If you use all or part
6// of it, please give an appropriate acknowledgement.
7//
8// Copyright Information: See EvtGen/COPYRIGHT
9// Copyright (C) 1998 Caltech, UCSB
10//
11// Module: EvtGen/EvtVubNLO.hh
12//
13// Description:
14// Class to generate inclusive B to X_u l nu decays according to various
15// decay models. Implemtented are ACCM, parton-model and a QCD model.
16//
17// Modification history:
18//
19// Sven Menke January 17, 2001 Module created
20//
21//------------------------------------------------------------------------
22
23#ifndef EVTVUBNLO_HH
24#define EVTVUBNLO_HH
25
27#include <vector>
28
29class EvtParticle;
30class RandGeneral;
31
33
34public:
36 virtual ~EvtVubNLO();
37
38 void getName( std::string& name );
39
41
42 void initProbMax();
43
44 void init();
45
46 void decay( EvtParticle* p );
47
48private:
49 // cache
50 double _lbar;
51 double _mupi2;
52
53 double _mb; // the b-quark pole mass in GeV
54 double _mB;
55 double _lambdaSF;
56 double _b; // Parameter for the Fermi Motion
57 double _kpar;
58 double _mui; // renormalization scale (preferred value=1.5 GeV)
59 double _SFNorm; // SF normalization
60 double _dGMax; // max dGamma*p2 value;
61 int _nbins;
62 int _idSF; // which shape function?
63 double* _masses;
64 double* _weights;
65
66 double _gmax;
67 int _ngood, _ntot;
68
69 double tripleDiff( double pp, double pl, double pm );
70 double SFNorm( const std::vector<double>& coeffs );
71 static double integrand( double omega, const std::vector<double>& coeffs );
72 double F10( const std::vector<double>& coeffs );
73 static double F1Int( double omega, const std::vector<double>& coeffs );
74 double F20( const std::vector<double>& coeffs );
75 static double F2Int( double omega, const std::vector<double>& coeffs );
76 double F30( const std::vector<double>& coeffs );
77 static double F3Int( double omega, const std::vector<double>& coeffs );
78 static double g1( double y, double z );
79 static double g2( double y, double z );
80 static double g3( double y, double z );
81
82 static double Gamma( double z ); // Euler Gamma Function
83 static double dgamma( double t, const std::vector<double>& c ) {
84 return pow( t, c[0] - 1 ) * exp( -t );
85 }
86 static double Gamma( double z, double tmax );
87
88 // theory parameters
89 inline double mu_i() { return _mui; } // intermediate scale
90 inline double mu_bar() { return _mui; }
91 inline double mu_h() { return _mb / sqrt( 2.0 ); } // high scale
92 inline double lambda1() { return -_mupi2; }
93
94 // expansion coefficients for RGE
95 static double beta0( int nf = 4 ) { return 11. - 2. / 3. * nf; }
96 static double beta1( int nf = 4 ) { return 34. * 3. - 38. / 3. * nf; }
97 static double beta2( int nf = 4 ) {
98 return 1428.5 - 5033. / 18. * nf + 325. / 54. * nf * nf;
99 }
100 static double gamma0() { return 16. / 3.; }
101 static double gamma1( int nf = 4 ) { return 4. / 3. * ( 49.85498 - 40. / 9. * nf ); }
102 static double gamma2( int nf = 4 ) {
103 return 64. / 3. * ( 55.07242 - 8.58691 * nf - nf * nf / 27. );
104 } /* zeta3=1.20206 */
105 static double gammap0() { return -20. / 3.; }
106 static double gammap1( int nf = 4 ) {
107 return -32. / 3. * ( 6.92653 - 0.9899 * nf );
108 } /* ?? zeta3=1.202 */
109
110 // running constants
111
112 static double alphas( double mu );
113 static double C_F( double mu ) { return ( 4.0 / 3.0 ) * alphas( mu ) / 4. / EvtConst::pi; }
114
115 // Shape Functions
116
117 inline double lambda_SF() { return _lambdaSF; }
118 double lambda_bar( double omega0 );
119 inline double lambda2() { return 0.12; }
120 double mu_pi2( double omega0 );
121 inline double lambda( double mu = 0 ) { return _mB - _mb; }
122
123 // specail for gaussian SF
124 static double cGaus( double b ) {
125 return pow( Gamma( 1 + b / 2. ) / Gamma( ( 1 + b ) / 2. ), 2 );
126 }
127
128 double M0( double mui, double omega0 );
129 static double shapeFunction( double omega, const std::vector<double>& coeffs );
130 static double expShapeFunction( double omega, const std::vector<double>& coeffs );
131 static double gausShapeFunction( double omega, const std::vector<double>& coeffs );
132 // SSF (not yet implemented)
133 double subS( const std::vector<double>& coeffs );
134 double subT( const std::vector<double>& coeffs );
135 double subU( const std::vector<double>& coeffs );
136 double subV( const std::vector<double>& coeffs );
137
138 // Sudakov
139
140 inline double S0( double a, double r ) {
141 return -gamma0() / 4 / a / pow( beta0(), 2 ) * ( 1 / r - 1 + log( r ) );
142 }
143 inline double S1( double a, double r ) {
144 return gamma0() / 4. / pow( beta0(), 2 ) *
145 ( pow( log( r ), 2 ) * beta1() / 2. / beta0() +
146 ( gamma1() / gamma0() - beta1() / beta0() ) * ( 1. - r + log( r ) ) );
147 }
148 inline double S2( double a, double r ) {
149 return gamma0() * a / 4. / pow( beta0(), 2 ) *
150 ( -0.5 * pow( ( 1 - r ), 2 ) *
151 ( pow( beta1() / beta0(), 2 ) - beta2() / beta0() -
152 beta1() / beta0() * gamma1() / gamma0() + gamma2() / gamma0() ) +
153 ( pow( beta1() / beta0(), 2 ) - beta2() / beta0() ) * ( 1 - r ) * log( r ) +
154 ( beta1() / beta0() * gamma1() / gamma0() - beta2() / beta0() ) *
155 ( 1 - r + r * log( r ) ) );
156 }
157 inline double dSudakovdepsi( double mu1, double mu2 ) {
158 return S2( alphas( mu1 ) / ( 4 * EvtConst::pi ), alphas( mu2 ) / alphas( mu1 ) );
159 }
160 inline double Sudakov( double mu1, double mu2, double epsi = 0 ) {
161 double fp( 4 * EvtConst::pi );
162 return S0( alphas( mu1 ) / fp, alphas( mu2 ) / alphas( mu1 ) ) +
163 S1( alphas( mu1 ) / fp, alphas( mu2 ) / alphas( mu1 ) ) +
164 epsi * dSudakovdepsi( mu1, mu2 );
165 }
166
167 // RG
168 inline double dGdepsi( double mu1, double mu2 ) {
169 return 1. / 8. / EvtConst::pi * ( alphas( mu2 ) - alphas( mu1 ) ) *
170 ( gamma1() / beta0() - beta1() * gamma0() / pow( beta0(), 2 ) );
171 }
172 inline double aGamma( double mu1, double mu2, double epsi = 0 ) {
173 return gamma0() / 2 / beta0() * log( alphas( mu2 ) / alphas( mu1 ) ) +
174 epsi * dGdepsi( mu1, mu2 );
175 }
176 inline double dgpdepsi( double mu1, double mu2 ) {
177 return 1. / 8. / EvtConst::pi * ( alphas( mu2 ) - alphas( mu1 ) ) *
178 ( gammap1() / beta0() - beta1() * gammap0() / pow( beta0(), 2 ) );
179 }
180 inline double agammap( double mu1, double mu2, double epsi = 0 ) {
181 return gammap0() / 2 / beta0() * log( alphas( mu2 ) / alphas( mu1 ) ) +
182 epsi * dgpdepsi( mu1, mu2 );
183 }
184 inline double U1( double mu1, double mu2, double epsi = 0 ) {
185 return exp( 2 * ( Sudakov( mu1, mu2, epsi ) - agammap( mu1, mu2, epsi ) -
186 aGamma( mu1, mu2, epsi ) * log( _mb / mu1 ) ) );
187 }
188 inline double U1lo( double mu1, double mu2 ) { return U1( mu1, mu2 ); }
189 inline double U1nlo( double mu1, double mu2 ) {
190 return U1( mu1, mu2 ) * ( 1 + 2 * ( dSudakovdepsi( mu1, mu2 ) - dgpdepsi( mu1, mu2 ) -
191 log( _mb / mu1 ) * dGdepsi( mu1, mu2 ) ) );
192 }
193 inline double alo( double mu1, double mu2 ) { return -2 * aGamma( mu1, mu2 ); }
194 inline double anlo( double mu1, double mu2 ) { return -2 * dGdepsi( mu1, mu2 ); }
195};
196
197#endif
TF1 * g1
EvtComplex exp(const EvtComplex &c)
static const double pi
Definition EvtConst.hh:27
void getName(std::string &name)
Definition EvtVubNLO.cc:51
void initProbMax()
Definition EvtVubNLO.cc:157
virtual ~EvtVubNLO()
Definition EvtVubNLO.cc:40
EvtDecayBase * clone()
Definition EvtVubNLO.cc:53
void init()
Definition EvtVubNLO.cc:55
void decay(EvtParticle *p)
Definition EvtVubNLO.cc:159
double * mu2
Definition qcdloop1.h:82
int t()
Definition t.c:1