62 scalar_part->
init( parent, p_init );
72 listdaug[1] = lepton1;
73 listdaug[2] = lepton2;
75 amp.
init( parent, 3, listdaug );
78 daughter = root_part->
getDaug( 0 );
94 double m = root_part->
mass();
99 double q2, elepton, plepton;
101 double erho, prho, costl;
103 double maxfoundprob = 0.0;
109 for ( massiter = 0; massiter < 3; massiter++ ) {
113 if ( massiter == 1 ) {
116 if ( massiter == 2 ) {
118 if ( ( mass[0] + mass[1] + mass[2] ) > m )
119 mass[0] = m - mass[1] - mass[2] - 0.00001;
122 q2max = ( m - mass[0] ) * ( m - mass[0] );
126 for ( i = 0; i < 25; i++ ) {
128 q2 = ( ( i + 1.5 ) * q2max ) / 26.0;
131 q2 = 4 * ( mass[1] * mass[1] );
133 erho = ( m * m + mass[0] * mass[0] - q2 ) / ( 2.0 * m );
135 prho = sqrt( erho * erho - mass[0] * mass[0] );
137 p4meson.
set( erho, 0.0, 0.0, -1.0 * prho );
138 p4w.
set( m - erho, 0.0, 0.0, prho );
141 elepton = ( q2 + mass[1] * mass[1] ) / ( 2.0 * sqrt( q2 ) );
142 plepton = sqrt( elepton * elepton - mass[1] * mass[1] );
146 for ( j = 0; j < 3; j++ ) {
147 costl = 0.99 * ( j - 1.0 );
151 p4lepton1.
set( elepton, 0.0,
152 plepton * sqrt( 1.0 - costl * costl ),
154 p4lepton2.
set( elepton, 0.0,
155 -1.0 * plepton * sqrt( 1.0 - costl * costl ),
156 -1.0 * plepton * costl );
158 EvtVector4R boost( ( m - erho ), 0.0, 0.0, 1.0 * prho );
159 p4lepton1 =
boostTo( p4lepton1, boost );
160 p4lepton2 =
boostTo( p4lepton2, boost );
164 daughter->
init( meson, p4meson );
165 lep1->
init( lepton1, p4lepton1 );
166 lep2->
init( lepton2, p4lepton2 );
168 CalcAmp( root_part, amp, FormFactors );
187 double a = probctl[1];
188 double b = 0.5 * ( probctl[2] - probctl[0] );
189 double c = 0.5 * ( probctl[2] + probctl[0] ) - probctl[1];
192 if ( probctl[1] > prob )
194 if ( probctl[2] > prob )
197 if ( fabs( c ) > 1e-20 ) {
198 double ctlx = -0.5 * b / c;
199 if ( fabs( ctlx ) < 1.0 ) {
200 double probtmp = a + b * ctlx + c * ctlx * ctlx;
201 if ( probtmp > prob )
216 if ( prob > maxfoundprob ) {
230 poleSize = 0.04 * ( maxpole / maxfoundprob ) * 4 * ( mass[1] * mass[1] );
237 maxfoundprob *= 1.15;
247 double shat = q2 / mbeff / mbeff;
249 logshat = log( shat );
265 Lmu = log( muscale / mbeff );
282 Lmu = log( muscale / mbeff );
294 f71 = k7100 + k7101 * logshat + shat * ( k7110 + k7111 * logshat ) +
295 shat * shat * ( k7120 + k7121 * logshat ) +
296 shat * shat * shat * ( k7130 + k7131 * logshat );
297 F71 = ( -208.0 / 243.0 ) * Lmu + f71;
309 f72 = k7200 + k7201 * logshat + shat * ( k7210 + k7211 * logshat ) +
310 shat * shat * ( k7220 + k7221 * logshat ) +
311 shat * shat * shat * ( k7230 + k7231 * logshat );
312 F72 = ( 416.0 / 81.0 ) * Lmu + f72;
316 ( -44.0 / 9.0 ) + ( -8.0 *
EvtConst::pi / 9.0 ) * uniti +
322 ( -8.0 * logshat / 9.0 ) * ( shat + shat * shat + shat * shat * shat );
325 ( C1 * F71 + C2 * F72 + A8 * F78 );
335 double shat = q2 / mbeff / mbeff;
337 logshat = log( shat );
347 A9 = 4.287 + ( -0.218 );
360 Lmu = log( muscale / mbeff );
366 xarg = 4.0 * mchat / shat;
367 hc = -4.0 / 9.0 * log( mchat * mchat ) + 8.0 / 27.0 + 4.0 * xarg / 9.0;
370 hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
371 ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
372 ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
375 hc = hc - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
376 2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
381 h1 = 8.0 / 27.0 + 4.0 * xarg / 9.0;
383 h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
384 ( log( fabs( ( sqrt( 1.0 - xarg ) + 1.0 ) /
385 ( sqrt( 1.0 - xarg ) - 1.0 ) ) ) -
388 h1 = h1 - 2.0 / 9.0 * ( 2.0 + xarg ) * sqrt( fabs( 1.0 - xarg ) ) *
389 2.0 * atan( 1.0 / sqrt( xarg - 1.0 ) );
393 h0 = 8.0 / 27.0 - 4.0 * log( 2.0 ) / 9.0 + 4.0 * uniti *
EvtConst::pi / 9.0;
397 EvtComplex Vudstar( 1.0 - 0.2279 * 0.2279 / 2.0, 0.0 );
398 EvtComplex Vub( ( 0.118 + 0.273 ) / 2.0, -1.0 * ( 0.305 + 0.393 ) / 2.0 );
399 EvtComplex Vtdstar( 1.0 - ( 0.118 + 0.273 ) / 2.0, ( 0.305 + 0.393 ) / 2.0 );
403 Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
408 c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0;
419 A9 = 4.174 + ( -0.035 );
426 Lmu = log( muscale / mbeff );
438 f91 = k9100 + k9101 * logshat + shat * ( k9110 + k9111 * logshat ) +
439 shat * shat * ( k9120 + k9121 * logshat ) +
440 shat * shat * shat * ( k9130 + k9131 * logshat );
441 F91 = ( -1424.0 / 729.0 + 16.0 * uniti *
EvtConst::pi / 243.0 +
442 64.0 / 27.0 * log( mchat ) ) *
444 16.0 * Lmu * logshat / 243.0 +
445 ( 16.0 / 1215.0 - 32.0 / 135.0 / mchat / mchat ) * Lmu * shat +
446 ( 4.0 / 2835.0 - 8.0 / 315.0 / mchat / mchat / mchat / mchat ) * Lmu *
449 32.0 / 8505.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
450 Lmu * shat * shat * shat -
451 256.0 * Lmu * Lmu / 243.0 + f91;
463 f92 = k9200 + k9201 * logshat + shat * ( k9210 + k9211 * logshat ) +
464 shat * shat * ( k9220 + k9221 * logshat ) +
465 shat * shat * shat * ( k9230 + k9231 * logshat );
466 F92 = ( 256.0 / 243.0 - 32.0 * uniti *
EvtConst::pi / 81.0 -
467 128.0 / 9.0 * log( mchat ) ) *
469 32.0 * Lmu * logshat / 81.0 +
470 ( -32.0 / 405.0 + 64.0 / 45.0 / mchat / mchat ) * Lmu * shat +
471 ( -8.0 / 945.0 + 16.0 / 105.0 / mchat / mchat / mchat / mchat ) *
474 64.0 / 2835.0 / mchat / mchat / mchat / mchat / mchat / mchat ) *
475 Lmu * shat * shat * shat +
476 512.0 * Lmu * Lmu / 81.0 + f92;
485 16.0 * logshat / 9.0 *
486 ( 1.0 + shat + shat * shat + shat * shat * shat );
488 Xd = ( Vudstar * Vub / Vtdstar * Vtb ) * ( 4.0 / 3.0 * C1 + C2 ) *
491 c9eff = A9 + T9 * hc + U9 * h1 + W9 * h0 -
492 alphas / ( 4.0 *
EvtConst::pi ) * ( C1 * F91 + C2 * F92 + A8 * F98 );
518 double delta,
lambda, prob;
519 double f1, f2, f3, f4;
524 sh = s / ( mb * mb );
530 double alphas = 0.119 /
531 ( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
535 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
536 ( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
538 2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
539 ( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
541 ( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
542 ( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
544 double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
547 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
548 log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
549 2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
550 pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
551 ( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
552 ( 2.0 + sh ) / ( 1.0 - sh );
555 double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
558 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
559 1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
560 2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
561 pow( ( 1.0 - sh ), 2 ) +
562 1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
565 double c7c9 =
abs( c7eff ) *
real( c9eff );
566 c7c9 *= pow( eta79, 2 );
567 double c7c7 = pow(
abs( c7eff ), 2 );
568 c7c7 *= pow( eta7, 2 );
570 double c9c9plusc10c10 = pow(
abs( c9eff ), 2 ) + pow(
abs( c10eff ), 2 );
571 c9c9plusc10c10 *= pow( eta9, 2 );
572 double c9c9minusc10c10 = pow(
abs( c9eff ), 2 ) - pow(
abs( c10eff ), 2 );
573 c9c9minusc10c10 *= pow( eta9, 2 );
575 lambda = 1.0 + sh * sh + pow( msh, 4 ) -
576 2.0 * ( sh + sh * msh * msh + msh * msh );
578 f1 = pow( 1.0 - msh * msh, 2 ) - sh * ( 1.0 + msh * msh );
579 f2 = 2.0 * ( 1.0 + msh * msh ) * pow( 1.0 - msh * msh, 2 ) -
580 sh * ( 1.0 + 14.0 * msh * msh + pow( msh, 4 ) ) -
581 sh * sh * ( 1.0 + msh * msh );
582 f3 = pow( 1.0 - msh * msh, 2 ) + sh * ( 1.0 + msh * msh ) - 2.0 * sh * sh +
583 lambda * 2.0 * mlh * mlh / sh;
584 f4 = 1.0 - sh + msh * msh;
586 delta = ( 12.0 * c7c9 * f1 + 4.0 * c7c7 * f2 / sh ) *
587 ( 1.0 + 2.0 * mlh * mlh / sh ) +
588 c9c9plusc10c10 * f3 + 6.0 * mlh * mlh * c9c9minusc10c10 * f4;
590 prob = sqrt(
lambda * ( 1.0 - 4.0 * mlh * mlh / sh ) ) * delta;
602 double f1sp, f2sp, f3sp;
604 double sh = s / ( mb * mb );
610 double alphas = 0.119 /
611 ( 1 + 0.119 * log( pow( 4.8, 2 ) / pow( 91.1867, 2 ) ) *
615 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
616 ( 5.0 + 4.0 * sh ) / ( 3.0 * ( 1.0 + 2.0 * sh ) ) *
618 2.0 * sh * ( 1.0 + sh ) * ( 1.0 - 2.0 * sh ) /
619 ( 3.0 * pow( 1.0 - sh, 2 ) * ( 1.0 + 2.0 * sh ) ) *
621 ( 5.0 + 9.0 * sh - 6.0 * sh * sh ) /
622 ( 6.0 * ( 1.0 - sh ) * ( 1.0 + 2.0 * sh ) );
624 double omega7 = -8.0 / 3.0 * log( 4.8 / mb ) -
627 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
628 log( 1 - sh ) * ( 8.0 + sh ) / ( 2.0 + sh ) / 3.0 -
629 2.0 / 3.0 * sh * ( 2.0 - 2.0 * sh - sh * sh ) * log( sh ) /
630 pow( ( 1.0 - sh ), 2 ) / ( 2.0 + sh ) -
631 ( 16.0 - 11.0 * sh - 17.0 * sh * sh ) / 18.0 /
632 ( 2.0 + sh ) / ( 1.0 - sh );
635 double omega79 = -4.0 / 3.0 * log( 4.8 / mb ) -
638 2.0 / 3.0 * log( sh ) * log( 1.0 - sh ) -
639 1.0 / 9.0 * ( 2.0 + 7.0 * sh ) * log( 1.0 - sh ) / sh -
640 2.0 / 9.0 * sh * ( 3.0 - 2.0 * sh ) * log( sh ) /
641 pow( ( 1.0 - sh ), 2 ) +
642 1.0 / 18.0 * ( 5.0 - 9.0 * sh ) / ( 1.0 - sh );
645 double c7c9 =
abs( c7eff ) *
real( c9eff );
646 c7c9 *= pow( eta79, 2 );
647 double c7c7 = pow(
abs( c7eff ), 2 );
648 c7c7 *= pow( eta7, 2 );
650 double c9c9plusc10c10 = pow(
abs( c9eff ), 2 ) + pow(
abs( c10eff ), 2 );
651 c9c9plusc10c10 *= pow( eta9, 2 );
654 double c7c10 =
abs( c7eff ) *
real( c10eff );
657 double c9c10 =
real( c9eff ) *
real( c10eff );
658 c9c10 *= pow( eta9, 2 );
660 f1sp = ( pow( mb * mb - ms * ms, 2 ) - s * s ) * c9c9plusc10c10 +
662 ( pow( mb, 4 ) - ms * ms * mb * mb -
663 pow( ms, 4 ) * ( 1.0 - ms * ms / ( mb * mb ) ) -
664 8.0 * s * ms * ms - s * s * ( 1.0 + ms * ms / ( mb * mb ) ) ) *
668 * ( 1.0 + 2.0 * ml * ml / s ) -
669 8.0 * ( s * ( mb * mb + ms * ms ) - pow( mb * mb - ms * ms, 2 ) ) *
672 * ( 1.0 + 2.0 * ml * ml / s );
674 f2sp = 4.0 * s * c9c10 + 8.0 * ( mb * mb + ms * ms ) * c7c10;
675 f3sp = -( c9c9plusc10c10 ) + 4.0 * ( 1.0 + pow( ms / mb, 4 ) ) * mb * mb *
679 * ( 1.0 + 2.0 * ml * ml / s );
681 prob = ( f1sp + f2sp * u + f3sp * u * u ) / pow( mb, 3 );
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtParticle * getDaug(const int i)
void makeDaughters(size_t ndaug, const EvtId *id)
void init(EvtId part_n, double e, double px, double py, double pz)