/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtVubNLO.hh

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 //
00003 // Environment:
00004 //      This software is part of the EvtGen package developed jointly
00005 //      for the BaBar and CLEO collaborations.  If you use all or part
00006 //      of it, please give an appropriate acknowledgement.
00007 //
00008 // Copyright Information: See EvtGen/COPYRIGHT
00009 //      Copyright (C) 1998      Caltech, UCSB
00010 //
00011 // Module: EvtGen/EvtVubNLO.hh
00012 //
00013 // Description:
00014 // Class to generate inclusive B to X_u l nu decays according to various
00015 // decay models. Implemtented are ACCM, parton-model and a QCD model.
00016 //
00017 // Modification history:
00018 //
00019 //   Sven Menke     January 17, 2001         Module created
00020 //
00021 //------------------------------------------------------------------------
00022 
00023 #ifndef EVTVUBNLO_HH
00024 #define EVTVUBNLO_HH
00025 
00026 #include <vector>
00027 #include "EvtGenBase/EvtDecayIncoherent.hh"
00028 
00029 class EvtParticle;
00030 class RandGeneral;
00031 
00032 class EvtVubNLO:public  EvtDecayIncoherent  {
00033 
00034 public:
00035   
00036   EvtVubNLO() {}
00037   virtual ~EvtVubNLO();
00038 
00039   void getName(std::string& name);
00040 
00041   EvtDecayBase* clone();
00042 
00043   void initProbMax();
00044 
00045   void init();
00046 
00047   void decay(EvtParticle *p); 
00048 
00049 
00050 private:
00051 
00052   // cache
00053   double _lbar;
00054   double _mupi2;
00055 
00056   double _mb;     // the b-quark pole mass in GeV 
00057   double _mB;
00058   double _lambdaSF;
00059   double _b;      // Parameter for the Fermi Motion 
00060   double _kpar;  
00061   double _mui; // renormalization scale (preferred value=1.5 GeV)
00062   double _SFNorm; // SF normalization 
00063   double _dGMax;  // max dGamma*p2 value;
00064   int    _nbins;
00065   int    _idSF;// which shape function?
00066   double * _masses;
00067   double * _weights;
00068 
00069   double _gmax;
00070   int _ngood,_ntot;
00071 
00072 
00073   double tripleDiff(double pp, double pl, double pm);
00074   double SFNorm(const std::vector<double> &coeffs);
00075   static double integrand(double omega, const std::vector<double> &coeffs);
00076   double F10(const std::vector<double> &coeffs);
00077   static double F1Int(double omega,const std::vector<double> &coeffs);
00078   double F20(const std::vector<double> &coeffs);
00079   static double F2Int(double omega,const std::vector<double> &coeffs);
00080   double F30(const std::vector<double> &coeffs);
00081   static double F3Int(double omega,const std::vector<double> &coeffs);
00082   static double g1(double y, double z);
00083   static double g2(double y, double z);
00084   static double g3(double y, double z);
00085 
00086   static double Gamma(double z);// Euler Gamma Function
00087   static double dgamma(double t, const std::vector<double> &c){  return pow(t,c[0]-1)*exp(-t);}
00088   static double Gamma(double z, double tmax);
00089 
00090   // theory parameters
00091   inline double mu_i(){return _mui;} // intermediate scale
00092   inline double mu_bar(){return _mui;} 
00093   inline double mu_h(){return _mb/sqrt(2.0);} // high scale
00094   inline double lambda1(){return -_mupi2;}
00095   
00096   // expansion coefficients for RGE
00097   static double beta0(int nf=4){return 11.-2./3.*nf;}
00098   static double beta1(int nf=4){return 34.*3.-38./3.*nf;}
00099   static double beta2(int nf=4){return 1428.5-5033./18.*nf+325./54.*nf*nf;}
00100   static double gamma0(){return 16./3.;}
00101   static double gamma1(int nf=4){return 4./3.*(49.85498-40./9.*nf);}
00102   static double gamma2(int nf=4){return 64./3.*(55.07242-8.58691*nf-nf*nf/27.);} /*  zeta3=1.20206 */
00103   static double gammap0(){return -20./3.;}
00104   static double gammap1(int nf=4){return -32./3.*(6.92653-0.9899*nf);} /* ??  zeta3=1.202 */
00105 
00106 
00107   // running constants
00108 
00109   static double alphas(double mu) ; 
00110   static double C_F(double mu){return (4.0/3.0)*alphas(mu)/4./EvtConst::pi;}
00111 
00112   // Shape Functions
00113 
00114   inline double lambda_SF(){ return _lambdaSF;}
00115   double lambda_bar(double omega0);
00116   inline double lambda2(){return 0.12;}
00117   double mu_pi2(double omega0);
00118   inline double lambda(double mu=0){ return _mB-_mb;}
00119 
00120   // specail for gaussian SF
00121   static double cGaus(double b){return pow(Gamma(1+b/2.)/Gamma((1+b)/2.),2);}
00122 
00123   double M0(double mui,double omega0);
00124   static double shapeFunction(double omega, const std::vector<double> &coeffs);
00125   static double expShapeFunction(double omega, const std::vector<double> &coeffs);
00126   static double gausShapeFunction(double omega, const std::vector<double> &coeffs);
00127   // SSF (not yet implemented)
00128   double subS(const std::vector<double> &coeffs );
00129   double subT(const std::vector<double> &coeffs);
00130   double subU(const std::vector<double> &coeffs);
00131   double subV(const std::vector<double> &coeffs);
00132 
00133 
00134   // Sudakov
00135 
00136   inline double S0(double a, double r){return -gamma0()/4/a/pow(beta0(),2)*(1/r-1+log(r));}
00137   inline double S1(double a, double r){return gamma0()/4./pow(beta0(),2)*(
00138                                                                   pow(log(r),2)*beta1()/2./beta0()+(gamma1()/gamma0()-beta1()/beta0())*(1.-r+log(r))
00139                                                                   );}
00140   inline double S2(double a, double r){return gamma0()*a/4./pow(beta0(),2)*(
00141                                                                            -0.5*pow((1-r),2)*(
00142                                                                                          pow(beta1()/beta0(),2)-beta2()/beta0()-beta1()/beta0()*gamma1()/gamma0()+gamma2()/gamma0()
00143                                                                                          )
00144                                                                            +(pow(beta1()/beta0(),2)-beta2()/beta0())*(1-r)*log(r)
00145                                                                            +(beta1()/beta0()*gamma1()/gamma0()-beta2()/beta0())*(1-r+r*log(r))
00146                                                                            );}
00147   inline double dSudakovdepsi(double mu1, double mu2){return S2(alphas(mu1)/(4*EvtConst::pi),alphas(mu2)/alphas(mu1));}
00148   inline double Sudakov(double mu1, double mu2, double epsi=0){double fp(4*EvtConst::pi);return S0(alphas(mu1)/fp,alphas(mu2)/alphas(mu1))+S1(alphas(mu1)/fp,alphas(mu2)/alphas(mu1))+epsi*dSudakovdepsi(mu1,mu2);}
00149 
00150   // RG 
00151   inline double dGdepsi(double mu1, double mu2){return 1./8./EvtConst::pi*(alphas(mu2)-alphas(mu1))*(gamma1()/beta0()-beta1()*gamma0()/pow(beta0(),2));}
00152   inline double aGamma(double mu1, double mu2, double epsi=0){return gamma0()/2/beta0()*log(alphas(mu2)/alphas(mu1))+epsi*dGdepsi( mu1, mu2);}
00153   inline double dgpdepsi(double mu1, double mu2){return 1./8./EvtConst::pi*(alphas(mu2)-alphas(mu1))*(gammap1()/beta0()-beta1()*gammap0()/pow(beta0(),2));}
00154   inline double agammap(double mu1, double mu2, double epsi=0){return gammap0()/2/beta0()*log(alphas(mu2)/alphas(mu1))+epsi*dgpdepsi( mu1, mu2);}
00155   inline double U1(double mu1, double mu2, double epsi=0){return exp(2*(Sudakov(mu1,mu2,epsi)-agammap(mu1,mu2,epsi)-aGamma(mu1,mu2,epsi)*log(_mb/mu1)));}
00156   inline double U1lo(double mu1, double mu2){return U1(mu1,mu2);}
00157   inline double U1nlo(double mu1, double mu2){return U1(mu1,mu2)*(1+2*(dSudakovdepsi(mu1,mu2)-dgpdepsi( mu1, mu2)-log(_mb/mu1)*dGdepsi( mu1, mu2)));}
00158   inline double alo(double mu1, double mu2){return -2*aGamma(mu1,mu2);}
00159   inline double anlo(double mu1, double mu2){return -2*dGdepsi(mu1,mu2);}
00160 
00161 };
00162 
00163 #endif
00164 

Generated on Tue Nov 29 23:12:23 2016 for BOSS_7.0.2 by  doxygen 1.4.7