61 scalar_part->
init( parent, p_init );
71 listdaug[1] = lepton1;
72 listdaug[2] = lepton2;
74 amp.
init( parent, 3, listdaug );
77 daughter = root_part->
getDaug( 0 );
93 double m = root_part->
mass();
98 double q2, elepton, plepton;
100 double erho, prho, costl;
102 double maxfoundprob = 0.0;
108 for ( massiter = 0; massiter < 3; massiter++ )
121 q2max = ( m -
mass[0] ) * ( m -
mass[0] );
125 for ( i = 0; i < 25; i++ )
128 q2 = ( ( i + 1.5 ) * q2max ) / 26.0;
130 if ( i == 0 ) q2 = 4 * (
mass[1] *
mass[1] );
132 erho = ( m * m +
mass[0] *
mass[0] - q2 ) / ( 2.0 * m );
134 prho = sqrt( erho * erho -
mass[0] *
mass[0] );
136 p4meson.
set( erho, 0.0, 0.0, -1.0 * prho );
137 p4w.
set( m - erho, 0.0, 0.0, prho );
140 elepton = ( q2 +
mass[1] *
mass[1] ) / ( 2.0 * sqrt( q2 ) );
141 plepton = sqrt( elepton * elepton -
mass[1] *
mass[1] );
145 for ( j = 0; j < 3; j++ )
148 costl = 0.99 * ( j - 1.0 );
152 p4lepton1.
set( elepton, 0.0, plepton * sqrt( 1.0 - costl * costl ), plepton * costl );
153 p4lepton2.
set( elepton, 0.0, -1.0 * plepton * sqrt( 1.0 - costl * costl ),
154 -1.0 * plepton * costl );
156 EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
157 p4lepton1 =
boostTo( p4lepton1, boost );
158 p4lepton2 =
boostTo( p4lepton2, boost );
162 daughter->
init( meson, p4meson );
163 lep1->
init( lepton1, p4lepton1 );
164 lep2->
init( lepton2, p4lepton2 );
166 CalcAmp( root_part, amp, FormFactors );
185 double a = probctl[1];
186 double b = 0.5 * ( probctl[2] - probctl[0] );
187 double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
190 if ( probctl[1] > prob ) prob = probctl[1];
191 if ( probctl[2] > prob ) prob = probctl[2];
193 if ( fabs( c ) > 1e-20 )
195 double ctlx = -0.5 * b / c;
196 if ( fabs( ctlx ) < 1.0 )
198 double probtmp = a + b * ctlx + c * ctlx * ctlx;
199 if ( probtmp > prob ) prob = probtmp;
214 if ( prob > maxfoundprob ) { maxfoundprob = prob; }
227 poleSize = 0.04 * ( maxpole / maxfoundprob ) * 4 * (
mass[1] *
mass[1] );
234 maxfoundprob *= 1.15;
241 if ( !nnlo )
return -0.313;
243 double shat = q2 / mbeff / mbeff;
245 logshat = log( shat );
256 A9 = 4.287 + ( -0.218 );
258 A10 = -4.592 + 0.379;
271 Lmu = log( muscale / mbeff );
287 A9 = 4.174 + ( -0.035 );
288 A10 = -4.592 + 0.379;
294 Lmu = log( muscale / mbeff );
306 f71 = k7100 + k7101 * logshat + shat * ( k7110 + k7111 * logshat ) +
307 shat * shat * ( k7120 + k7121 * logshat ) +
308 shat * shat * shat * ( k7130 + k7131 * logshat );
309 F71 = ( -208.0 / 243.0 ) * Lmu + f71;
321 f72 = k7200 + k7201 * logshat + shat * ( k7210 + k7211 * logshat ) +
322 shat * shat * ( k7220 + k7221 * logshat ) +
323 shat * shat * shat * ( k7230 + k7231 * logshat );
324 F72 = ( 416.0 / 81.0 ) * Lmu + f72;
332 ( -8.0 * logshat / 9.0 ) * ( shat + shat * shat + shat * shat * shat );
334 c7eff = A7 - alphas / ( 4.0 *
EvtConst::pi ) * ( C1 * F71 + C2 * F72 + A8 * F78 );
341 if ( !nnlo )
return 4.344;
343 double shat = q2 / mbeff / mbeff;
345 logshat = log( shat );
357 A9 = 4.287 + ( -0.218 );
359 A10 = -4.592 + 0.379;
372 Lmu = log( muscale / mbeff );
378 xarg = 4.0 * mchat / shat;
379 hc = -4.0 / 9.0 * log( mchat * mchat ) + 8.0 / 27.0 + 4.0 * xarg / 9.0;
384 hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
385 ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) / ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
390 hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) * 2.0 *
391 atan( 1.0 / sqrt( xarg - 1.0 ) );
396 h1 = 8.0 / 27.0 + 4.0 * xarg / 9.0;
400 h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
401 ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) / ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
406 h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) * 2.0 *
407 atan( 1.0 / sqrt( xarg - 1.0 ) );
411 h0 = 8.0 / 27.0 - 4.0 * log( 2.0 ) / 9.0 + 4.0 * uniti *
EvtConst::pi / 9.0;
415 EvtComplex Vudstar( 1.0 - 0.2279 * 0.2279 / 2.0, 0.0 );
416 EvtComplex Vub( ( 0.118 + 0.273 ) / 2.0, -1.0 * ( 0.305 + 0.393 ) / 2.0 );
417 EvtComplex Vtdstar( 1.0 - ( 0.118 + 0.273 ) / 2.0, ( 0.305 + 0.393 ) / 2.0 );
421 Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) * ( hc - h0 );
426 c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
427 if ( btod ) { c9eff += Xd; }
435 A9 = 4.174 + ( -0.035 );
442 Lmu = log( muscale / mbeff );
454 f91 = k9100 + k9101 * logshat + shat * ( k9110 + k9111 * logshat ) +
455 shat * shat * ( k9120 + k9121 * logshat ) +
456 shat * shat * shat * ( k9130 + k9131 * logshat );
458 ( -1424.0 / 729.0 + 16.0 * uniti *
EvtConst::pi / 243.0 + 64.0 / 27.0 * log( mchat ) ) *
460 16.0 * Lmu * logshat / 243.0 +
461 ( 16.0 / 1215.0 - 32.0 / 135.0 / mchat / mchat ) * Lmu * shat +
462 ( 4.0 / 2835.0 - 8.0 / 315.0 / mchat / mchat / mchat / mchat ) * Lmu * shat * shat +
463 ( 16.0 / 76545.0 - 32.0 / 8505.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
464 Lmu * shat * shat * shat -
465 256.0 * Lmu * Lmu / 243.0 + f91;
477 f92 = k9200 + k9201 * logshat + shat * ( k9210 + k9211 * logshat ) +
478 shat * shat * ( k9220 + k9221 * logshat ) +
479 shat * shat * shat * ( k9230 + k9231 * logshat );
480 F92 = ( 256.0 / 243.0 - 32.0 * uniti *
EvtConst::pi / 81.0 - 128.0 / 9.0 * log( mchat ) ) *
482 32.0 * Lmu * logshat / 81.0 +
483 ( -32.0 / 405.0 + 64.0 / 45.0 / mchat / mchat ) * Lmu * shat +
484 ( -8.0 / 945.0 + 16.0 / 105.0 / mchat / mchat / mchat / mchat ) * Lmu * shat * shat +
485 ( -32.0 / 25515.0 + 64.0 / 2835.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
486 Lmu * shat * shat * shat +
487 512.0 * Lmu * Lmu / 81.0 + f92;
495 16.0 * logshat / 9.0 * ( 1.0 + shat + shat * shat + shat * shat * shat );
497 Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) * ( hc - h0 );
499 c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0 -
500 alphas / ( 4.0 *
EvtConst::pi ) * ( C1 * F91 + C2 * F92 + A8 * F98 );
501 if ( btod ) { c9eff += Xd; }
522 double delta, lambda, prob;
523 double f1, f2, f3, f4;
528 sh =
s / ( mb * mb );
534 double alphas = 0.119 / ( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) * 23.0 /
538 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
539 ( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) * log( 1.0 - sh ) -
540 2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
541 ( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) * log( sh ) +
542 ( 5.0 + 9.0 * sh - 6.0 * sh * sh ) / ( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
544 double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) - 4.0 / 3.0 *
ddilog_( sh ) -
546 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
547 log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
548 2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
549 pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
550 ( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 / ( 2.0 + sh ) / ( 1.0 - sh );
553 double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) - 4.0 / 3.0 *
ddilog_( sh ) -
555 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
556 1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
557 2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) / pow( ( 1.0 - sh ), 2 ) +
558 1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
561 double c7c9 =
abs( c7eff ) *
real( c9eff );
562 c7c9 *= pow( eta79, 2 );
563 double c7c7 = pow(
abs( c7eff ), 2 );
564 c7c7 *= pow( eta7, 2 );
566 double c9c9plusc10c10 = pow(
abs( c9eff ), 2 ) + pow(
abs( c10eff ), 2 );
567 c9c9plusc10c10 *= pow( eta9, 2 );
568 double c9c9minusc10c10 = pow(
abs( c9eff ), 2 ) - pow(
abs( c10eff ), 2 );
569 c9c9minusc10c10 *= pow( eta9, 2 );
571 lambda = 1.0 + sh * sh + pow( msh, 4 ) - 2.0 * ( sh + sh * msh * msh + msh * msh );
573 f1 = pow( 1.0 - msh * msh, 2 ) - sh * ( 1.0 + msh * msh );
574 f2 = 2.0 * ( 1.0 + msh * msh ) * pow( 1.0 - msh * msh, 2 ) -
575 sh * ( 1.0 + 14.0 * msh * msh + pow( msh, 4 ) ) - sh * sh * ( 1.0 + msh * msh );
576 f3 = pow( 1.0 - msh * msh, 2 ) + sh * ( 1.0 + msh * msh ) - 2.0 * sh * sh +
577 lambda * 2.0 * mlh * mlh / sh;
578 f4 = 1.0 - sh + msh * msh;
580 delta = ( 12.0 * c7c9 *
f1 + 4.0 * c7c7 * f2 / sh ) * ( 1.0 + 2.0 * mlh * mlh / sh ) +
581 c9c9plusc10c10 * f3 + 6.0 * mlh * mlh * c9c9minusc10c10 * f4;
583 prob = sqrt( lambda * ( 1.0 - 4.0 * mlh * mlh / sh ) ) * delta;
593 double f1sp, f2sp, f3sp;
595 double sh =
s / ( mb * mb );
601 double alphas = 0.119 / ( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) * 23.0 /
605 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
606 ( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) * log( 1.0 - sh ) -
607 2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
608 ( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) * log( sh ) +
609 ( 5.0 + 9.0 * sh - 6.0 * sh * sh ) / ( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
611 double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) - 4.0 / 3.0 *
ddilog_( sh ) -
613 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
614 log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
615 2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
616 pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
617 ( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 / ( 2.0 + sh ) / ( 1.0 - sh );
620 double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) - 4.0 / 3.0 *
ddilog_( sh ) -
622 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
623 1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
624 2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) / pow( ( 1.0 - sh ), 2 ) +
625 1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
628 double c7c9 =
abs( c7eff ) *
real( c9eff );
629 c7c9 *= pow( eta79, 2 );
630 double c7c7 = pow(
abs( c7eff ), 2 );
631 c7c7 *= pow( eta7, 2 );
633 double c9c9plusc10c10 = pow(
abs( c9eff ), 2 ) + pow(
abs( c10eff ), 2 );
634 c9c9plusc10c10 *= pow( eta9, 2 );
635 double c9c9minusc10c10 = pow(
abs( c9eff ), 2 ) - pow(
abs( c10eff ), 2 );
636 c9c9minusc10c10 *= pow( eta9, 2 );
637 double c7c10 =
abs( c7eff ) *
real( c10eff );
640 double c9c10 =
real( c9eff ) *
real( c10eff );
641 c9c10 *= pow( eta9, 2 );
644 ( pow( mb * mb - ms * ms, 2 ) -
s *
s ) * c9c9plusc10c10 +
646 ( pow( mb, 4 ) - ms * ms * mb * mb - pow( ms, 4 ) * ( 1.0 - ms * ms / ( mb * mb ) ) -
647 8.0 *
s * ms * ms -
s *
s * ( 1.0 + ms * ms / ( mb * mb ) ) ) *
651 * ( 1.0 + 2.0 *
ml *
ml /
s ) -
652 8.0 * (
s * ( mb * mb + ms * ms ) - pow( mb * mb - ms * ms, 2 ) ) *
655 * ( 1.0 + 2.0 *
ml *
ml /
s );
657 f2sp = 4.0 *
s * c9c10 + 8.0 * ( mb * mb + ms * ms ) * c7c10;
658 f3sp = -( c9c9plusc10c10 ) + 4.0 * ( 1.0 + pow( ms / mb, 4 ) ) * mb * mb * c7c7 /
661 * ( 1.0 + 2.0 *
ml *
ml /
s );
663 prob = ( f1sp + f2sp * u + f3sp * u * u ) / pow( mb, 3 );
void makeDaughters(int ndaug, EvtId *id)
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
void init(EvtId part_n, double e, double px, double py, double pz)