Changeset View
Changeset View
Standalone View
Standalone View
EvtGenModels/EvtVubNLO.hh
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | public: | ||||
void initProbMax() override; | void initProbMax() override; | ||||
void init() override; | void init() override; | ||||
void decay( EvtParticle* p ) override; | void decay( EvtParticle* p ) override; | ||||
private: | private: | ||||
// cache | // cache | ||||
double _lbar; | double m_lbar; | ||||
double _mupi2; | double m_mupi2; | ||||
double _mb; // the b-quark pole mass in GeV | double m_mb; // the b-quark pole mass in GeV | ||||
double _mB; | double m_mB; | ||||
double _lambdaSF; | double m_lambdaSF; | ||||
double _b; // Parameter for the Fermi Motion | double m_b; // Parameter for the Fermi Motion | ||||
double _kpar; | double m_kpar; | ||||
double _mui; // renormalization scale (preferred value=1.5 GeV) | double m_mui; // renormalization scale (preferred value=1.5 GeV) | ||||
double _SFNorm; // SF normalization | double m_SFNorm; // SF normalization | ||||
double _dGMax; // max dGamma*p2 value; | double m_dGMax; // max dGamma*p2 value; | ||||
int _idSF; // which shape function? | int m_idSF; // which shape function? | ||||
std::vector<double> _masses; | std::vector<double> m_masses; | ||||
std::vector<double> _weights; | std::vector<double> m_weights; | ||||
double _gmax; | double m_gmax; | ||||
int _ngood, _ntot; | int m_ngood, m_ntot; | ||||
double tripleDiff( double pp, double pl, double pm ); | double tripleDiff( double pp, double pl, double pm ); | ||||
double SFNorm( const std::vector<double>& coeffs ); | double SFNorm( const std::vector<double>& coeffs ); | ||||
static double integrand( double omega, const std::vector<double>& coeffs ); | static double integrand( double omega, const std::vector<double>& coeffs ); | ||||
double F10( const std::vector<double>& coeffs ); | double F10( const std::vector<double>& coeffs ); | ||||
static double F1Int( double omega, const std::vector<double>& coeffs ); | static double F1Int( double omega, const std::vector<double>& coeffs ); | ||||
double F20( const std::vector<double>& coeffs ); | double F20( const std::vector<double>& coeffs ); | ||||
static double F2Int( double omega, const std::vector<double>& coeffs ); | static double F2Int( double omega, const std::vector<double>& coeffs ); | ||||
double F30( const std::vector<double>& coeffs ); | double F30( const std::vector<double>& coeffs ); | ||||
static double F3Int( double omega, const std::vector<double>& coeffs ); | static double F3Int( double omega, const std::vector<double>& coeffs ); | ||||
static double g1( double y, double z ); | static double g1( double y, double z ); | ||||
static double g2( double y, double z ); | static double g2( double y, double z ); | ||||
static double g3( double y, double z ); | static double g3( double y, double z ); | ||||
static double Gamma( double z ); // Euler Gamma Function | static double Gamma( double z ); // Euler Gamma Function | ||||
static double dgamma( double t, const std::vector<double>& c ) | static double dgamma( double t, const std::vector<double>& c ) | ||||
{ | { | ||||
return pow( t, c[0] - 1 ) * exp( -t ); | return pow( t, c[0] - 1 ) * exp( -t ); | ||||
} | } | ||||
static double Gamma( double z, double tmax ); | static double Gamma( double z, double tmax ); | ||||
// theory parameters | // theory parameters | ||||
inline double mu_i() { return _mui; } // intermediate scale | inline double mu_i() { return m_mui; } // intermediate scale | ||||
inline double mu_bar() { return _mui; } | inline double mu_bar() { return m_mui; } | ||||
inline double mu_h() { return _mb / sqrt( 2.0 ); } // high scale | inline double mu_h() { return m_mb / sqrt( 2.0 ); } // high scale | ||||
inline double lambda1() { return -_mupi2; } | inline double lambda1() { return -m_mupi2; } | ||||
// expansion coefficients for RGE | // expansion coefficients for RGE | ||||
static double beta0( int nf = 4 ) { return 11. - 2. / 3. * nf; } | static double beta0( int nf = 4 ) { return 11. - 2. / 3. * nf; } | ||||
static double beta1( int nf = 4 ) { return 34. * 3. - 38. / 3. * nf; } | static double beta1( int nf = 4 ) { return 34. * 3. - 38. / 3. * nf; } | ||||
static double beta2( int nf = 4 ) | static double beta2( int nf = 4 ) | ||||
{ | { | ||||
return 1428.5 - 5033. / 18. * nf + 325. / 54. * nf * nf; | return 1428.5 - 5033. / 18. * nf + 325. / 54. * nf * nf; | ||||
} | } | ||||
Show All 17 Lines | private: | ||||
static double alphas( double mu ); | static double alphas( double mu ); | ||||
static double C_F( double mu ) | static double C_F( double mu ) | ||||
{ | { | ||||
return ( 4.0 / 3.0 ) * alphas( mu ) / 4. / EvtConst::pi; | return ( 4.0 / 3.0 ) * alphas( mu ) / 4. / EvtConst::pi; | ||||
} | } | ||||
// Shape Functions | // Shape Functions | ||||
inline double lambda_SF() { return _lambdaSF; } | inline double lambda_SF() { return m_lambdaSF; } | ||||
double lambda_bar( double omega0 ); | double lambda_bar( double omega0 ); | ||||
inline double lambda2() { return 0.12; } | inline double lambda2() { return 0.12; } | ||||
double mu_pi2( double omega0 ); | double mu_pi2( double omega0 ); | ||||
inline double lambda( double ) { return _mB - _mb; } | inline double lambda( double ) { return m_mB - m_mb; } | ||||
// specail for gaussian SF | // specail for gaussian SF | ||||
static double cGaus( double b ) | static double cGaus( double b ) | ||||
{ | { | ||||
return pow( Gamma( 1 + b / 2. ) / Gamma( ( 1 + b ) / 2. ), 2 ); | return pow( Gamma( 1 + b / 2. ) / Gamma( ( 1 + b ) / 2. ), 2 ); | ||||
} | } | ||||
double M0( double mui, double omega0 ); | double M0( double mui, double omega0 ); | ||||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | private: | ||||
inline double agammap( double mu1, double mu2, double epsi = 0 ) | inline double agammap( double mu1, double mu2, double epsi = 0 ) | ||||
{ | { | ||||
return gammap0() / 2 / beta0() * log( alphas( mu2 ) / alphas( mu1 ) ) + | return gammap0() / 2 / beta0() * log( alphas( mu2 ) / alphas( mu1 ) ) + | ||||
epsi * dgpdepsi( mu1, mu2 ); | epsi * dgpdepsi( mu1, mu2 ); | ||||
} | } | ||||
inline double U1( double mu1, double mu2, double epsi = 0 ) | inline double U1( double mu1, double mu2, double epsi = 0 ) | ||||
{ | { | ||||
return exp( 2 * ( Sudakov( mu1, mu2, epsi ) - agammap( mu1, mu2, epsi ) - | return exp( 2 * ( Sudakov( mu1, mu2, epsi ) - agammap( mu1, mu2, epsi ) - | ||||
aGamma( mu1, mu2, epsi ) * log( _mb / mu1 ) ) ); | aGamma( mu1, mu2, epsi ) * log( m_mb / mu1 ) ) ); | ||||
} | } | ||||
inline double U1lo( double mu1, double mu2 ) { return U1( mu1, mu2 ); } | inline double U1lo( double mu1, double mu2 ) { return U1( mu1, mu2 ); } | ||||
inline double U1nlo( double mu1, double mu2 ) | inline double U1nlo( double mu1, double mu2 ) | ||||
{ | { | ||||
return U1( mu1, mu2 ) * | return U1( mu1, mu2 ) * | ||||
( 1 + 2 * ( dSudakovdepsi( mu1, mu2 ) - dgpdepsi( mu1, mu2 ) - | ( 1 + 2 * ( dSudakovdepsi( mu1, mu2 ) - dgpdepsi( mu1, mu2 ) - | ||||
log( _mb / mu1 ) * dGdepsi( mu1, mu2 ) ) ); | log( m_mb / mu1 ) * dGdepsi( mu1, mu2 ) ) ); | ||||
} | } | ||||
inline double alo( double mu1, double mu2 ) | inline double alo( double mu1, double mu2 ) | ||||
{ | { | ||||
return -2 * aGamma( mu1, mu2 ); | return -2 * aGamma( mu1, mu2 ); | ||||
} | } | ||||
inline double anlo( double mu1, double mu2 ) | inline double anlo( double mu1, double mu2 ) | ||||
{ | { | ||||
return -2 * dGdepsi( mu1, mu2 ); | return -2 * dGdepsi( mu1, mu2 ); | ||||
} | } | ||||
}; | }; | ||||
#endif | #endif |