|
EvtGen
2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
|
Go to the documentation of this file. 67 double mu, int Nf, int sr, int res_swch, 68 int ias, double Egamma_min, double CKM_A, 69 double CKM_lambda, double CKM_barrho, 70 double CKM_bareta, double mumumass_min ) 81 double M1 = parent-> mass(); 97 double Relambda_qu, Imlambda_qu; 102 if ( charge1 == 0 || charge2 == 0 ) { 104 << "\n\n The function EvtbsTollGammaAmp::CalcAmp(...)" 105 << "\n Error in the leptonic charge getting!" 106 << "\n charge1 =" << charge1 107 << "\n charge2 =" << charge2 << "\n charge gamma =" 109 << "\n number of daughters =" << parent-> getNDaug() << std::endl; 116 lepPlus = ( charge1 > charge2 ) 119 lepMinus = ( charge1 < charge2 ) 131 if ( charge1 > charge2 ) { 144 double q2 = q. mass2(); 145 double p2 = p. mass2(); 146 double t = p_minus_p_1. mass2(); 147 double u = p_minus_p_2. mass2(); 150 double pk = 0.5 * ( p2 - q2 ); 151 double p1k = 0.5 * ( pow( ml, 2.0 ) - u ); 152 double p2k = 0.5 * ( pow( ml, 2.0 ) - t ); 154 double hatq2 = q2 / ( M1 * M1 ); 155 double Egam = 0.5 * M1 * 177 Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) + 178 pow( CKM_lambda, 2.0 ) * 179 ( CKM_barrho * unit1 + CKM_bareta * uniti ) / 180 sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); 181 Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq; 183 Vuq = CKM_lambda * unit1; 185 Vcq = unit1 - 0.5 * pow( CKM_lambda, 2.0 ) - 186 0.125 * pow( CKM_lambda, 4.0 ) * ( 1.0 + 4.0 * pow( CKM_A, 2.0 ) ); 194 Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) * 195 ( CKM_barrho * unit1 + CKM_bareta * uniti ) / 196 sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); 197 Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq; 199 Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) - 200 0.125 * pow( CKM_lambda, 4.0 ) ); 204 0.5 * pow( CKM_A, 2.0 ) * pow( CKM_lambda, 5.0 ) * 205 ( 1.0 - 2.0 * ( CKM_barrho * unit1 + CKM_bareta * uniti ) / 206 sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ) ) ); 211 << "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(..// 4-momentum of ell^+.)" 212 << "\n Error in the model set!" 213 << " mq = " << mq << std::endl; 217 Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda, 219 Vub = CKM_A * pow( CKM_lambda, 3.0 ) * 220 ( CKM_barrho * unit1 - CKM_bareta * uniti ) / 221 sqrt( 1.0 - pow( CKM_lambda, 2.0 ) ); 222 Vcb = unit1 * CKM_A * pow( CKM_lambda, 2.0 ); 224 CKM_factor = conj( Vtq ) * Vtb; 226 lambda_qu = conj( Vuq ) * Vub / 228 Relambda_qu = real( lambda_qu ); 229 Imlambda_qu = imag( lambda_qu ); 231 lambda_qc = conj( Vcq ) * Vcb / 240 if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) || 241 ( q2 <= mumumass_min * mumumass_min ) ) { 246 c9eff_b2q = unit1 * 0.0; 247 c9eff_barb2barq = unit1 * 0.0; 250 c1 = WilsCoeff-> C1( mu, Mw, Nf, ias ); 251 c2 = WilsCoeff-> C2( mu, Mw, Nf, ias ); 252 a1 = unit1 * ( c1 + c2 / 3.0 ); 253 c7gam = WilsCoeff-> GetC7Eff( mu, Mw, mt, Nf, ias ); 254 c9eff_b2q = WilsCoeff-> GetC9Eff( 0, res_swch, ias, Nf, q2, mb, mq, mc, mu, 255 mt, Mw, ml, Relambda_qu, Imlambda_qu ); 256 c9eff_barb2barq = WilsCoeff-> GetC9Eff( 1, res_swch, ias, Nf, q2, mb, mq, 257 mc, mu, mt, Mw, ml, Relambda_qu, 268 if ( Egam < Egamma_min || ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) || 269 ( q2 <= mumumass_min * mumumass_min ) ) { 273 Fta_b2q = unit1 * 0.0; 274 Fta_barb2barq = unit1 * 0.0; 275 Ftv_b2q = unit1 * 0.0; 276 Ftv_barb2barq = unit1 * 0.0; 280 << "\n\n The function EvtbsTollGammaISRFSRAmp::CalcAmp(...)" 281 << "\n Leptonic decay constant fb is not uninitialized in this function!" 282 << " fb = " << fb << std::endl; 288 a1, lambda_qu, lambda_qc, Fv, Fa, Ftv_b2q, 293 a1, lambda_qu, lambda_qc, Fv, Fa, 294 Ftv_barb2barq, Fta_barb2barq ); 344 EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, e_b2q, e_barb2barq, 348 a_b2q = c9eff_b2q * Fv + 2.0 * c7gam * Ftv_b2q * mb * M1 / q2; 349 a_barb2barq = c9eff_barb2barq * Fv + 350 2.0 * c7gam * Ftv_barb2barq * mb * M1 / q2; 352 b_b2q = ( c9eff_b2q * Fa + 2.0 * c7gam * Fta_b2q * mb * M1 / q2 ) * pk / 354 b_barb2barq = ( c9eff_barb2barq * Fa + 355 2.0 * c7gam * Fta_barb2barq * mb * M1 / q2 ) * 361 f_b2q = c10a * Fa * pk / ( M1 * M1 ); 365 brammT = 0.5 * c10a * ml * fb * 366 ( 1.0 / p2k + 1.0 / p1k ); 405 static EvtIdSet bmesons( "anti-B0", "anti-B_s0" ); 406 static EvtIdSet bbarmesons( "B0", "B_s0" ); 410 if ( bmesons. contains( parentID ) ) { 459 for ( i = 0; i < 2; i++ ) { 464 E1 = T1. cont2( epsG ); 465 E2 = T2. cont2( epsG ); 466 E3 = ( epsG * hatp ) * brammS; 469 if ( Egam < Egamma_min || 470 ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) || 471 ( q2 <= mumumass_min * mumumass_min ) ) { 472 CKM_factor = 0.0 * unit1; 478 ( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 + 479 uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) * 488 ( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 + 489 uniti * ( ( ltc12. cont2( hatp ) ) * epsG ) * 498 ( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 + 499 uniti * ( ( ltc21. cont2( hatp ) ) * epsG ) * 508 ( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 + 509 uniti * ( ( ltc22. cont2( hatp ) ) * epsG ) * 517 if ( bbarmesons. contains( parentID ) ) { 521 T1 = -a_barb2barq * unit1 * 525 T2 = -e_barb2barq * unit1 * 567 for ( i = 0; i < 2; i++ ) { 570 E1 = T1. cont2( barepsG ); 571 E2 = T2. cont2( barepsG ); 572 E3 = ( barepsG * hatp ) * brammS; 575 if ( Egam < Egamma_min || 576 ( res_swch == 1 && q2 >= 9.199 && q2 <= 15.333 ) || 577 ( q2 <= mumumass_min * mumumass_min ) ) { 578 CKM_factor = 0.0 * unit1; 584 ( lvc11 * E1 + lac11 * E2 + uniti * lsc11 * E3 + 585 uniti * ( ( ltc11.cont2( hatp ) ) * epsG ) * brammT ) ); 589 ( lvc12 * E1 + lac12 * E2 + uniti * lsc12 * E3 + 590 uniti * ( ( ltc12. cont2( hatp ) ) * epsG ) * brammT ) ); 594 ( lvc21 * E1 + lac21 * E2 + uniti * lsc21 * E3 + 595 uniti * ( ( ltc21. cont2( hatp ) ) * epsG ) * brammT ) ); 599 ( lvc22 * E1 + lac22 * E2 + uniti * lsc22 * E3 + 600 uniti * ( ( ltc22. cont2( hatp ) ) * epsG ) * brammT ) ); 605 << "\n\n The function Evtbs2llGammaISRFSRAmp::CalcAmp(...)" 606 << "\n Wrong B-meson number" << std::endl; 628 int Nf, int sr, int res_swch, int ias, double Egamma_min, double CKM_A, 629 double CKM_lambda, double CKM_barrho, double CKM_bareta, double mumumass_min ) 631 double maxfoundprob = -100.0; 639 std::string( "omega" ) ) ); 652 double list_of_max_q2_points[5]; 653 list_of_max_q2_points[0] = pow( 2.0 * ml, 2.0 ); 654 list_of_max_q2_points[1] = pow( Mrho, 2.0 ); 655 list_of_max_q2_points[2] = pow( Momega, 2.0 ); 656 list_of_max_q2_points[3] = pow( Mphi, 2.0 ); 657 list_of_max_q2_points[4] = 658 pow( M1, 2.0 ) - 2.0 * M1 * Egamma_min; 671 if ( Egamma_min > Mrho ) { 673 << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)" 674 << "\n Bad photon energy cut: Egamma_min > M_rho0 in the rest frame of B-meson." 675 << "\n Mrho = " << Mrho << "\n Egamma_min = " << Egamma_min 680 if ( Egamma_min <= 0 ) { 682 << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)" 683 << "\n Bad photon energy cut: Egamma_min <= 0 in the rest frame of B-meson." 684 << "\n Egamma_min = " << Egamma_min << std::endl; 688 if ( res_swch == 0 || res_swch == 1 ) { 690 for ( i_list = 0; i_list <= 4; i_list++ ) { 698 s = list_of_max_q2_points[i_list]; 700 t_plus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s; 701 t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) * 702 ( pow( M1, 2.0 ) - s ); 705 t_minus = pow( M1, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s; 706 t_minus = t_minus - sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) * 707 ( pow( M1, 2.0 ) - s ); 710 if ( fabs( t_plus - t_minus ) < 0.000001 ) 714 double dt = ( t_plus - t_minus ) / ( ( double)max_ijk ); 715 if ( fabs( dt ) < 0.00001 ) 720 << "\n\n In the function EvtbsTollGammaISRFSRAmp::CalcScalarMaxProb(...)" 721 << "\n dt = " << dt << " < 0." 722 << "\n s = " << s << "\n t_plus = " << t_plus 723 << "\n t_minus = " << t_minus << "\n M1 = " << M1 724 << "\n ml = " << ml << std::endl; 728 for ( ijk = 0; ijk <= max_ijk; ijk++ ) { 729 t_for_s = t_minus + dt * ( (double)ijk ); 733 Eg = ( pow( M1, 2.0 ) - s ) / ( 2.0 * M1 ); 734 El2 = ( s + t_for_s - pow( ml, 2.0 ) ) / 738 modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) ); 741 cosBellminus = ( pow( ml, 2.0 ) + 2.0 * Eg * El2 - t_for_s ) / 742 ( 2.0 * Eg * modl2 ); 744 if ( ( fabs( cosBellminus ) > 1.0 ) && 745 ( fabs( cosBellminus ) <= 1.0001 ) ) { 747 << "\n Debug in the function EvtbsTollGammaISRFSRAmp::CalcMaxProb(...):" 748 << "\n cos(theta) = " << cosBellminus << std::endl; 749 cosBellminus = cosBellminus / fabs( cosBellminus ); 751 if ( fabs( cosBellminus ) > 1.0001 ) { 753 << "\n\n In the function EvtbsTollGammaISRFSRAmp::CalcMaxProb(...)" 754 << "\n |cos(theta)| = " << fabs( cosBellminus ) << " > 1" 755 << "\n s = " << s << "\n t_for_s = " << t_for_s 756 << "\n t_plus = " << t_plus << "\n t_minus = " << t_minus 757 << "\n dt = " << dt << "\n Eg = " << Eg 758 << "\n El2 = " << El2 << "\n modl2 = " << modl2 759 << "\n ml = " << ml << std::endl; 764 p. set( M1, 0.0, 0.0, 0.0 ); 765 k. set( Eg, Eg, 0.0, 0.0 ); 766 p2. set( El2, modl2 * cosBellminus, 767 -modl2 * sqrt( 1.0 - pow( cosBellminus, 2.0 ) ), 0.0 ); 776 scalar_part-> init( parnum, p ); 782 listdaug[0] = photnum; 787 amp. init( parnum, 3, listdaug ); 793 gamm = root_part-> getDaug( 0 ); 794 lep1 = root_part-> getDaug( 1 ); 795 lep2 = root_part-> getDaug( 2 ); 801 gamm-> init( photnum, k ); 802 lep1-> init( l1num, p1 ); 803 lep2-> init( l2num, p2 ); 810 CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, sr, 811 res_swch, ias, Egamma_min, CKM_A, CKM_lambda, 812 CKM_barrho, CKM_bareta, mumumass_min ); 817 if ( nikmax > maxfoundprob ) { 818 double maxfoundprob_old; 819 maxfoundprob_old = maxfoundprob; 820 maxfoundprob = nikmax; 822 << "\n maxfoundprob ( s =" << s << ", t = " << t_for_s 823 << " ) = " << maxfoundprob 824 << "\n maxfoundprob_old = " << maxfoundprob_old 825 << "\n ijk =" << ijk << std::endl; 839 << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)" 840 << "\n Unexpected value of the variable res_swch !!!" 841 << "\n res_swch = " << res_swch << std::endl; 845 if ( maxfoundprob < 0.0 ) { 847 << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)" 848 << "\n maxfoundprob = " << maxfoundprob << " <0 or =0!" 849 << "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr 850 << " res_swch =" << res_swch << " ias =" << ias 851 << "\n Egamma_min =" << Egamma_min << "\n CKM_A = " << CKM_A 852 << " CKM_lambda = " << CKM_lambda << "\n CKM_barrho = " << CKM_barrho 853 << " CKM_bareta = " << CKM_bareta << std::endl; 857 if ( maxfoundprob == 0.0 ) { 859 << "\n\n In the function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...)" 860 << "\n maxfoundprob = " << maxfoundprob << " <0 or =0!" 861 << "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr 862 << " res_swch =" << res_swch << " ias =" << ias 863 << "\n Egamma_min =" << Egamma_min << "\n CKM_A = " << CKM_A 864 << " CKM_lambda = " << CKM_lambda << "\n CKM_barrho = " << CKM_barrho 865 << " CKM_bareta = " << CKM_bareta << std::endl; 866 maxfoundprob = 0.00000001; 869 maxfoundprob *= 1.01; 872 << "\n **********************************************************************" 873 << "\n The function Evtbs2llGammaISRFSRAmp::CalcMaxProb(...) passed with arguments:" 874 << "\n mu =" << mu << " Nf =" << Nf << "\n sr =" << sr 875 << " res_swch =" << res_swch << " ias =" << ias 876 << "\n CKM_A = " << CKM_A << " CKM_lambda = " << CKM_lambda 877 << "\n Egamma_min =" << Egamma_min << "\n CKM_barrho = " << CKM_barrho 878 << " CKM_bareta = " << CKM_bareta 879 << "\n The distribution maximum maxfoundprob =" << maxfoundprob 880 << "\n **********************************************************************" 891 l = pow( a, 2.0 ) + pow( b, 2.0 ) + pow( c, 2.0 ) - 2.0 * a * b - 892 2.0 * a * c - 2.0 * b * c; EvtTensor3C directProd(const EvtVector3C &c1, const EvtVector3C &c2)
EvtTensor4C EvtLeptonTCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
static const EvtTensor4C & g()
EvtComplex GetC7Eff(double mu, double Mw, double mt, int Nf, int ias)
double lambda(double a, double b, double c)
EvtTensor4C dual(const EvtTensor4C &t2)
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
Evt3Rank3C conj(const Evt3Rank3C &t2)
virtual void getPhotonFF(int, double, EvtId, double, double, double, double, EvtComplex, EvtComplex, EvtComplex, EvtComplex, EvtComplex &, EvtComplex &, EvtComplex &, EvtComplex &)
EvtVector4C cont2(const EvtVector4C &v4) const
static double getMeanMass(EvtId i)
int getSpinStates() const
virtual EvtVector4C epsParentPhoton(int i)
void makeDaughters(unsigned int ndaug, EvtId *id)
void set(int i, double d)
EvtSpinDensity getSpinDensity()
virtual EvtDiracSpinor spParent(int) const
EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
void vertex(const EvtComplex &)
double CalcMaxProb(EvtId parnum, EvtId photnum, EvtId l1num, EvtId l2num, Evtbs2llGammaFF *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int sr, int res_swch, int ias, double Egamma_min, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta, double mumumass_min)
double C2(double mu, double Mw, int Nf, int ias)
EvtComplex GetC9Eff(int decay_id, int res_swch, int ias, int Nf, double q2, double m2, double md, double mc, double mu, double mt, double Mw, double ml, double Relambda_qu, double Imlambda_qu)
EvtComplex GetC10Eff(double mt, double Mw)
static EvtId getId(const std::string &name)
const EvtVector4R & getP4() const
double imag(const EvtComplex &c)
void init(EvtId part_n, double e, double px, double py, double pz)
double C1(double mu, double Mw, int Nf, int ias)
void setDiagonalSpinDensity()
EvtParticle * getDaug(int i)
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
int contains(const EvtId id)
EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtVector4R getP4Restframe() const
void init(EvtId p, int ndaug, EvtId *daug)
double real(const EvtComplex &c)
void CalcAmp(EvtParticle *parent, EvtAmp &, Evtbs2llGammaFF *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int sr, int res_swch, int ias, double Egamma_min, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta, double mumumass_min)
virtual double getQuarkMass(int)
double normalizedProb(const EvtSpinDensity &d)
|