74 double CKM_A,
double CKM_lambda,
double CKM_barrho,
double CKM_bareta,
75 double ReA7,
double ImA7,
double ReA10,
double ImA10 )
83 EvtComplex A10 = ReA10 * unit1 + ImA10 * uniti;
94 double q2 = q.
mass2();
96 double M1 = parent->
mass();
110 double Relambda_qu, Imlambda_qu;
143 iddaught ==
EvtPDL::getId( std::string(
"anti-K'_10" ) ) ) ) {
146 Vtq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) +
147 pow( CKM_lambda, 2.0 ) *
148 ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
149 sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
150 Vtq = -CKM_A * pow( CKM_lambda, 2.0 ) * Vtq;
152 Vuq = CKM_lambda * unit1;
173 Vtq = unit1 - ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) ) *
174 ( CKM_barrho * unit1 + CKM_bareta * uniti ) /
175 sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
176 Vtq = CKM_A * pow( CKM_lambda, 3.0 ) * Vtq;
178 Vuq = unit1 * ( 1.0 - 0.5 * pow( CKM_lambda, 2.0 ) -
179 0.125 * pow( CKM_lambda, 4.0 ) );
184 <<
"\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...)"
185 <<
"\n Error in the model set!"
186 <<
" ms = " << ms << std::endl;
190 Vtb = unit1 * ( 1.0 - 0.5 * pow( CKM_A * CKM_lambda * CKM_lambda,
192 Vub = CKM_A * pow( CKM_lambda, 3.0 ) *
193 ( CKM_barrho * unit1 - CKM_bareta * uniti ) /
194 sqrt( 1.0 - pow( CKM_lambda, 2.0 ) );
196 CKM_factor =
conj( Vtq ) * Vtb;
198 lambda_qu =
conj( Vuq ) * Vub /
200 Relambda_qu =
real( lambda_qu );
201 Imlambda_qu =
imag( lambda_qu );
203 double a1,
a2, a0, v, t1, t2, t3;
207 q2,
a1,
a2, a0, v, t1, t2, t3 );
214 ms, mc, mu, mt, Mw, ml,
215 Relambda_qu, Imlambda_qu );
217 mb, ms, mc, mu, mt, Mw, ml,
218 Relambda_qu, Imlambda_qu );
277 double hats = q2 / pow( M1, 2 );
278 double hatM2 = M2 / M1;
279 double hatmb = mb / M1;
280 double hatms = ms / M1;
285 EvtComplex a_b2q, a_barb2barq, b_b2q, b_barb2barq, c_b2q, c_barb2barq, e, f,
288 a_b2q = 2.0 * c9eff_b2q * v / ( 1.0 + hatM2 ) +
289 4.0 * ( hatmb + hatms ) * c7gam * t1 / hats;
290 a_barb2barq = 2.0 * c9eff_barb2barq * v / ( 1.0 + hatM2 ) +
291 4.0 * ( hatmb + hatms ) * c7gam * t1 / hats;
293 b_b2q = ( c9eff_b2q *
a1 +
294 2.0 * ( hatmb - hatms ) * ( 1.0 - hatM2 ) * c7gam * t2 / hats ) *
296 b_barb2barq = ( c9eff_barb2barq *
a1 + 2.0 * ( hatmb - hatms ) *
297 ( 1.0 - hatM2 ) * c7gam * t2 /
301 c_b2q = ( c9eff_b2q * ( 1.0 - hatM2 ) *
a2 +
302 2.0 * ( hatmb - hatms ) * ( 1.0 - pow( hatM2, 2 ) ) * c7gam * t2 /
304 2.0 * ( hatmb - hatms ) * c7gam * t3 ) /
305 ( 1 - pow( hatM2, 2 ) );
307 c_barb2barq = ( c9eff_barb2barq * ( 1.0 - hatM2 ) *
a2 +
308 2.0 * ( hatmb - hatms ) * ( 1.0 - pow( hatM2, 2 ) ) *
310 2.0 * ( hatmb - hatms ) * c7gam * t3 ) /
311 ( 1 - pow( hatM2, 2 ) );
313 e = 2.0 * c10a * v / ( 1 + hatM2 );
315 f = ( 1.0 + hatM2 ) * c10a *
a1;
317 g = c10a *
a2 / ( 1 + hatM2 );
319 h = ( ( 1.0 + hatM2 ) *
a1 - ( 1.0 - hatM2 ) *
a2 - 2.0 * hatM2 * a0 ) *
341 lepPlus = ( charge1 > charge2 ) ? parent->
getDaug( 1 ) : parent->
getDaug( 2 );
342 lepMinus = ( charge1 < charge2 ) ? parent->
getDaug( 1 )
356 EvtIdSet bmesons{
"B-",
"anti-B0",
"anti-B_s0",
"B_c-" };
357 EvtIdSet bbarmesons{
"B+",
"B0",
"B_s0",
"B_c+" };
361 if ( bmesons.
contains( parentID ) ) {
394 for ( i = 0; i < 3; i++ ) {
400 amp.
vertex( i, 0, 0, CKM_factor * ( lvc11 * E1 + lac11 * E2 ) );
401 amp.
vertex( i, 0, 1, CKM_factor * ( lvc12 * E1 + lac12 * E2 ) );
402 amp.
vertex( i, 1, 0, CKM_factor * ( lvc21 * E1 + lac21 * E2 ) );
403 amp.
vertex( i, 1, 1, CKM_factor * ( lvc22 * E1 + lac22 * E2 ) );
407 if ( bbarmesons.
contains( parentID ) ) {
411 T1 = a_barb2barq * unit1 *
414 c_barb2barq * uniti *
443 for ( i = 0; i < 3; i++ ) {
450 conj( CKM_factor ) * ( lvc11 * E3 + lac11 * E4 ) );
452 conj( CKM_factor ) * ( lvc12 * E3 + lac12 * E4 ) );
454 conj( CKM_factor ) * ( lvc21 * E3 + lac21 * E4 ) );
456 conj( CKM_factor ) * ( lvc22 * E3 + lac22 * E4 ) );
461 <<
"\n\n The function EvtbTosllVectorAmpNew::CalcAmp(...)"
462 <<
"\n Wrong B-meson number" << std::endl;
500 int Nf,
int res_swch,
int ias,
double CKM_A,
double CKM_lambda,
501 double CKM_barrho,
double CKM_bareta,
double ReA7,
double ImA7,
502 double ReA10,
double ImA10 )
504 double maxfoundprob = -100.0;
511 if ( res_swch == 0 ) {
513 double s_min, t_for_s;
514 s_min = 4.0 * pow( ml, 2.0 );
516 ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - 2.0 * pow( ml, 2.0 ) );
519 EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s_min ) /
521 El2 = ( s_min + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
525 modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
526 modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
529 cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
531 ( 2.0 * modV * modl2 );
532 if ( ( fabs( cosVellminus ) > 1.0 ) &&
533 ( fabs( cosVellminus ) <= 1.0001 ) ) {
538 cosVellminus = cosVellminus / fabs( cosVellminus );
540 if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
541 cosVellminus = cosVellminus / fabs( cosVellminus );
543 <<
"\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
544 <<
"\n modV = " << modV <<
"\n modl2 = " << modl2
545 <<
"\n cos(theta) = " << cosVellminus
546 <<
"\n t_for_s = " << t_for_s <<
"\n s_min = " << s_min
547 <<
"\n EV = " << EV <<
"\n El2 = " << El2
548 <<
"\n M2 = " << M2 <<
"\n ml = " << ml
551 if ( fabs( cosVellminus ) > 1.0001 ) {
553 <<
"\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
554 <<
"\n |cos(theta)| = " << fabs( cosVellminus ) <<
" > 1"
555 <<
"\n s_min = " << s_min <<
"\n t_for_s = " << t_for_s
556 <<
"\n EV = " << EV <<
"\n El2 = " << El2
557 <<
"\n modV = " << modV <<
"\n modl2 = " << modl2
558 <<
"\n M2 = " << M2 <<
"\n ml = " << ml << std::endl;
563 p1.
set( M1, 0.0, 0.0, 0.0 );
564 p2.
set( EV, modV, 0.0, 0.0 );
565 k2.
set( El2, modl2 * cosVellminus,
566 -modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
602 scalar_part->
init( parnum, p1 );
608 listdaug[0] = mesnum;
613 amp.
init( parnum, 3, listdaug );
619 vect = root_part->
getDaug( 0 );
620 lep1 = root_part->
getDaug( 1 );
621 lep2 = root_part->
getDaug( 2 );
627 vect->
init( mesnum, p2 );
628 lep1->
init( l1num, k1 );
629 lep2->
init( l2num, k2 );
636 CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch, ias,
637 CKM_A, CKM_lambda, CKM_barrho, CKM_bareta, ReA7, ImA7, ReA10,
651 if ( res_swch == 1 ) {
653 double t_plus, t_minus;
657 s = pow( 3.09688, 2.0 );
659 t_plus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
660 t_plus = t_plus + sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
661 sqrt(
lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
664 t_minus = pow( M1, 2.0 ) + pow( M2, 2.0 ) + 2.0 * pow( ml, 2.0 ) - s;
666 sqrt( 1.0 - 4.0 * pow( ml, 2.0 ) / s ) *
667 sqrt(
lambda( s, pow( M1, 2.0 ), pow( M2, 2.0 ) ) );
670 dt = ( t_plus - t_minus ) / 1000.0;
673 for ( k = 0; k <= 1000; k++ ) {
674 t_for_s = t_plus - dt * ( (double)k );
676 if ( ( t_for_s < t_minus ) && ( t_for_s >= ( 0.9999 * t_minus ) ) ) {
679 if ( t_for_s < ( 0.9999 * t_minus ) ) {
681 <<
"\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
682 <<
"\n t_for_s = " << t_for_s <<
" < t_minus = " << t_minus
684 <<
"\n t_plus = " << t_plus <<
"\n dt = " << dt
685 <<
"\n k = " << k <<
"\n s = " << s
686 <<
"\n M1 = " << M1 <<
"\n M2 = " << M2
687 <<
"\n ml = " << ml << std::endl;
693 EV = ( pow( M1, 2.0 ) + pow( M2, 2.0 ) - s ) /
695 El2 = ( s + t_for_s - pow( M2, 2.0 ) - pow( ml, 2.0 ) ) /
699 modV = sqrt( pow( EV, 2.0 ) - pow( M2, 2.0 ) );
700 modl2 = sqrt( pow( El2, 2.0 ) - pow( ml, 2.0 ) );
703 cosVellminus = ( pow( M2, 2.0 ) + pow( ml, 2.0 ) + 2.0 * EV * El2 -
705 ( 2.0 * modV * modl2 );
706 if ( ( fabs( cosVellminus ) > 1.0 ) &&
707 ( fabs( cosVellminus ) <= 1.0001 ) ) {
712 cosVellminus = cosVellminus / fabs( cosVellminus );
714 if ( ( modV <= 0.000001 ) || ( modl2 <= 0.000001 ) ) {
715 cosVellminus = cosVellminus / fabs( cosVellminus );
717 <<
"\n Debug in the function EvtbTosllVectorAmpNew::CalcMaxProb(...):"
718 <<
"\n modV = " << modV <<
"\n modl2 = " << modl2
719 <<
"\n cos(theta) = " << cosVellminus
720 <<
"\n s = " << s <<
"\n t_for_s = " << t_for_s
721 <<
"\n t_plus = " << t_plus
722 <<
"\n t_minus = " << t_minus <<
"\n dt = " << dt
723 <<
"\n EV = " << EV <<
"\n El2 = " << El2
724 <<
"\n M2 = " << M2 <<
"\n ml = " << ml
727 if ( fabs( cosVellminus ) > 1.0001 ) {
729 <<
"\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
730 <<
"\n |cos(theta)| = " << fabs( cosVellminus ) <<
" > 1"
731 <<
"\n s = " << s <<
"\n t_for_s = " << t_for_s
732 <<
"\n EV = " << EV <<
"\n El2 = " << El2
733 <<
"\n modV = " << modV <<
"\n modl2 = " << modl2
734 <<
"\n M2 = " << M2 <<
"\n ml = " << ml
740 p1.
set( M1, 0.0, 0.0, 0.0 );
741 p2.
set( EV, modV, 0.0, 0.0 );
742 k2.
set( El2, modl2 * cosVellminus,
743 -modl2 * sqrt( 1.0 - pow( cosVellminus, 2.0 ) ), 0.0 );
779 scalar_part->
init( parnum, p1 );
785 listdaug[0] = mesnum;
790 amp.
init( parnum, 3, listdaug );
796 vect = root_part->
getDaug( 0 );
797 lep1 = root_part->
getDaug( 1 );
798 lep2 = root_part->
getDaug( 2 );
804 vect->
init( mesnum, p2 );
805 lep1->
init( l1num, k1 );
806 lep2->
init( l2num, k2 );
813 CalcAmp( root_part, amp, formFactors, WilsCoeff, mu, Nf, res_swch,
814 ias, CKM_A, CKM_lambda, CKM_barrho, CKM_bareta, ReA7, ImA7,
820 if ( nikmax > maxfoundprob ) {
821 maxfoundprob = nikmax;
824 <<
"\n maxfoundprob ( s =" << s <<
", t = " << t_for_s
825 <<
" ) = " << maxfoundprob <<
"\n k =" << katmax
839 if ( maxfoundprob <= 0.0 ) {
841 <<
"\n\n In the function EvtbTosllVectorAmpNew::CalcMaxProb(...)"
842 <<
"\n maxfoundprob = " << maxfoundprob <<
" <0 or =0!"
843 <<
"\n res_swch = " << res_swch << std::endl;
848 <<
"\n maxfoundprob (...) = " << maxfoundprob << std::endl;
850 maxfoundprob *= 1.01;
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
void makeDaughters(size_t ndaug, const EvtId *id)
void init(EvtId part_n, double e, double px, double py, double pz)
double CalcMaxProb(EvtId parnum, EvtId mesnum, EvtId l1num, EvtId l2num, EvtbTosllFFNew *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta, double ReA7, double ImA7, double ReA10, double ImA10) override
void CalcAmp(EvtParticle *parent, EvtAmp &, EvtbTosllFFNew *formFactors, EvtbTosllWilsCoeffNLO *WilsCoeff, double mu, int Nf, int res_swch, int ias, double CKM_A, double CKM_lambda, double CKM_barrho, double CKM_bareta, double ReA7, double ImA7, double ReA10, double ImA10) override