55 phi[1] = 3.365002324407079470347526;
56 phi[2] = 0.6621583377125883629332748;
57 phi[3] = 0.4339644541377705166951273;
58 phi[4] = 2.496788137814539787484591;
59 phi[5] = 5.337638327720493514050304;
62 rho[1] = 2.176692936463668459623477;
63 rho[2] = 1.815490493394110060876301;
64 rho[3] = 0.3832709830473302048403639;
65 rho[4] = 1.12572937386981664076302;
66 rho[5] = -1.190394848723933307610423;
80 width[0] = 0.0473000000000000017652546;
81 width[1] = 0.2320000000000000117683641;
82 width[2] = 0.1089999999999999996669331;
83 width[3] = 0.0200000000000000004163336;
84 width[4] = 0.1474000000000000032418512;
85 width[5] = 0.1867000000000000048405724;
87 mass[0] = 0.8955499999999999571898002;
88 mass[1] = 1.4139999999999999236166559;
89 mass[2] = 1.4323999999999998955502178;
90 mass[3] = 0.9000000000000000222044605;
91 mass[4] = 0.7752599999999999491606673;
92 mass[5] = 1.2755000000000000781597009;
106 mass_Pion2 = 0.0194797849;
107 mass_2Pion = 0.27914;
108 math_2pi = 6.2831852;
118 int GG[4][4] = { { 1, 0, 0, 0 }, { 0, -1, 0, 0 }, { 0, 0, -1, 0 }, { 0, 0, 0, -1 } };
119 for (
int i = 0; i < 4; i++ )
121 for (
int j = 0; j < 4; j++ ) { G[i][j] = GG[i][j]; }
169 double P1[4], P2[4], P3[4];
185 int g0[6] = { 1, 1, 1, 6, 1, 2 };
186 int spin[6] = { 1, 1, 2, 0, 1, 2 };
187 double r0[6] = { 3.0, 3.0, 3.0, 3.0, 3.0, 3.0 };
188 double r1[6] = { 5.0, 5.0, 5.0, 5.0, 5.0, 5.0 };
190 calEva( P1, P2, P3, mass, width, rho, phi, g0, spin, modetype, nstates, value, r0, r1 );
195void EvtDToKppipi::Com_Multi(
double a1[2],
double a2[2],
double res[2] ) {
196 res[0] = a1[0] * a2[0] - a1[1] * a2[1];
197 res[1] = a1[1] * a2[0] + a1[0] * a2[1];
199void EvtDToKppipi::Com_Divide(
double a1[2],
double a2[2],
double res[2] ) {
200 double tmp = a2[0] * a2[0] + a2[1] * a2[1];
201 res[0] = ( a1[0] * a2[0] + a1[1] * a2[1] ) / tmp;
202 res[1] = ( a1[1] * a2[0] - a1[0] * a2[1] ) / tmp;
204double EvtDToKppipi::CalRho4pi( double_t
s ) {
205 if (
s >= 1. ) {
return sqrt( (
s - 16. * mass_Pion * mass_Pion ) /
s ); }
208 double_t s0 = 1.2274 + 0.00370909 / (
s *
s ) - ( 0.111203 ) / (
s)-6.39017 *
s +
209 16.8358 *
s *
s - 21.8845 *
s *
s *
s + 11.3153 *
s *
s *
s *
s;
210 double_t gam = s0 * sqrt( 1.0 - ( 16.0 * mass_Pion * mass_Pion ) );
217double EvtDToKppipi::SCADot(
double a1[4],
double a2[4] ) {
218 double _cal = a1[0] * a2[0] - a1[1] * a2[1] - a1[2] * a2[2] - a1[3] * a2[3];
221double EvtDToKppipi::barrier(
int l,
double sa,
double sb,
double sc,
double r,
double mass ) {
222 double q = fabs( ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb );
227 double q0 = fabs( ( sa0 + sb - sc ) * ( sa0 + sb - sc ) / ( 4 * sa0 ) - sb );
228 double z0 = q0 * r * r;
231 if ( l == 1 ) F = sqrt( ( 1 + z0 ) / ( 1 + z ) );
232 if ( l == 2 ) F = sqrt( ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ) );
236void EvtDToKppipi::calt1(
double daug1[4],
double daug2[4],
double t1[4] ) {
239 for (
int i = 0; i < 4; i++ )
241 pa[i] = daug1[i] + daug2[i];
242 qa[i] = daug1[i] - daug2[i];
244 p = SCADot( pa, pa );
245 pq = SCADot( pa, qa );
247 for (
int i = 0; i < 4; i++ ) { t1[i] = qa[i] - tmp * pa[i]; }
249void EvtDToKppipi::calt2(
double daug1[4],
double daug2[4],
double t2[4][4] ) {
252 calt1( daug1, daug2, t1 );
253 r = SCADot( t1, t1 ) / 3.0;
254 for (
int i = 0; i < 4; i++ ) { pa[i] = daug1[i] + daug2[i]; }
255 p = SCADot( pa, pa );
256 for (
int i = 0; i < 4; i++ )
258 for (
int j = 0; j < 4; j++ )
259 { t2[i][j] = t1[i] * t1[j] - r * ( G[i][j] - pa[i] * pa[j] / p ); }
263void EvtDToKppipi::propagator(
double mass2,
double mass,
double width,
double sx,
269 b[1] = -mass * width;
270 Com_Divide( a, b, prop );
272double EvtDToKppipi::wid(
double mass2,
double mass,
double sa,
double sb,
double sc,
275 double m = sqrt( sa );
276 double tmp = sb - sc;
277 double tmp1 = sa + tmp;
278 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
279 double tmp2 = mass2 + tmp;
280 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
284 if ( l == 0 ) { widm = sqrt(
t ) * mass / m; }
285 else if ( l == 1 ) { widm =
t * sqrt(
t ) * mass / m * ( 1 + z0 ) / ( 1 + z ); }
287 { widm =
t *
t * sqrt(
t ) * mass / m * ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ); }
290double EvtDToKppipi::widl1(
double mass2,
double mass,
double sa,
double sb,
double sc,
293 double m = sqrt( sa );
294 double tmp = sb - sc;
295 double tmp1 = sa + tmp;
296 double q = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
297 double tmp2 = mass2 + tmp;
298 double q0 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
301 double F = ( 1 + z0 ) / ( 1 + z );
303 widm =
t * sqrt(
t ) * mass / m * F;
306void EvtDToKppipi::propagatorRBW(
double mass,
double width,
double sa,
double sb,
double sc,
307 double r2,
int l,
double prop[2] ) {
309 double mass2 = mass * mass;
313 b[1] = -mass * width * wid( mass2, mass, sa, sb, sc, r2, l );
314 Com_Divide( a, b, prop );
317void EvtDToKppipi::propagatorFlatte(
double mass,
double width,
double sa,
double prop[2] ) {
319 double rhoPi[2], rhoKa[2];
321 q2_Pi = 0.25 * sa - mPi * mPi;
322 q2_Ka = 0.25 * sa - mKa * mKa;
326 rhoPi[0] = 2.0 * sqrt( q2_Pi / sa );
332 rhoPi[1] = 2.0 * sqrt( -q2_Pi / sa );
337 rhoKa[0] = 2.0 * sqrt( q2_Ka / sa );
343 rhoKa[1] = 2.0 * sqrt( -q2_Ka / sa );
349 b[0] = mass * mass - sa + 0.165 * rhoPi[1] + 0.69465 * rhoKa[1];
350 b[1] = -( 0.165 * rhoPi[0] + 0.69465 * rhoKa[0] );
351 Com_Divide( a, b, prop );
354void EvtDToKppipi::rhoab(
double sa,
double sb,
double sc,
double res[2] ) {
355 double tmp = sa + sb - sc;
356 double q = 0.25 * tmp * tmp / sa - sb;
359 res[0] = 2.0 * sqrt(
q / sa );
365 res[1] = 2.0 * sqrt( -
q / sa );
368void EvtDToKppipi::rho4Pi(
double sa,
double res[2] ) {
369 double temp = 1.0 - 0.3116765584 / sa;
372 res[0] = sqrt( temp ) / ( 1.0 +
exp( 9.8 - 3.5 * sa ) );
378 res[1] = sqrt( -temp ) / ( 1.0 +
exp( 9.8 - 3.5 * sa ) );
382void EvtDToKppipi::propagatorsigma500(
double sa,
double sb,
double sc,
double prop[2] ) {
383 double f = 0.5843 + 1.6663 * sa;
384 const double M = 0.9264;
385 const double mass2 = 0.85821696;
386 const double mpi2d2 = 0.00973989245;
387 double g1 =
f * ( sa - mpi2d2 ) / ( mass2 - mpi2d2 ) *
exp( ( mass2 - sa ) / 1.082 );
388 double rho1s[2], rho1M[2], rho2s[2], rho2M[2], rho1[2], rho2[2];
389 rhoab( sa, sb, sc, rho1s );
390 rhoab( mass2, sb, sc, rho1M );
392 rho4Pi( mass2, rho2M );
393 Com_Divide( rho1s, rho1M, rho1 );
394 Com_Divide( rho2s, rho2M, rho2 );
398 b[0] = mass2 - sa + M * ( g1 * rho1[1] + 0.0024 * rho2[1] );
399 b[1] = -M * ( g1 * rho1[0] + 0.0024 * rho2[0] );
400 Com_Divide( a, b, prop );
402void EvtDToKppipi::Flatte_rhoab(
double sa,
double sb,
double rho[2] ) {
403 double q = 1.0 - ( 4 * sb / sa );
417void EvtDToKppipi::propagator980(
double mass,
double sx,
double* sb,
double prop[2] ) {
418 double gpipi1 = 2.0 / 3.0 * 0.165;
419 double gpipi2 = 1.0 / 3.0 * 0.165;
420 double gKK1 = 0.5 * 0.69465;
421 double gKK2 = 0.5 * 0.69465;
423 double unit[2] = { 1.0 };
424 double ci[2] = { 0, 1 };
426 Flatte_rhoab( sx, sb[0], rho1 );
428 Flatte_rhoab( sx, sb[1], rho2 );
430 Flatte_rhoab( sx, sb[2], rho3 );
432 Flatte_rhoab( sx, sb[3], rho4 );
434 double tmp1[2] = { gpipi1, 0 };
436 double tmp2[2] = { gpipi2, 0 };
438 double tmp3[2] = { gKK1, 0 };
440 double tmp4[2] = { gKK2, 0 };
443 Com_Multi( tmp1, rho1, tmp11 );
444 Com_Multi( tmp2, rho2, tmp22 );
445 Com_Multi( tmp3, rho3, tmp33 );
446 Com_Multi( tmp4, rho4, tmp44 );
448 double tmp5[2] = { tmp11[0] + tmp22[0] + tmp33[0] + tmp44[0],
449 tmp11[1] + tmp22[1] + tmp33[1] + tmp44[1] };
451 Com_Multi( tmp5, ci, tmp51 );
452 double tmp6[2] = { mass * mass - sx - tmp51[0], -1.0 * tmp51[1] };
454 Com_Divide(
unit, tmp6, prop );
457void EvtDToKppipi::KPiSLASS(
double sa,
double sb,
double sc,
double prop[2] ) {
458 const double m1430 = 1.441;
459 const double sa0 = 2.076481;
460 const double w1430 = 0.193;
461 const double Lass1 = 0.25 / sa0;
462 double tmp = sb - sc;
463 double tmp1 = sa0 + tmp;
464 double q0 = fabs( Lass1 * tmp1 * tmp1 - sb );
465 double tmp2 = sa + tmp;
466 double qs = 0.25 * tmp2 * tmp2 / sa - sb;
467 double q = sqrt( qs );
468 double width = w1430 *
q * m1430 / sqrt( sa * q0 );
469 double temp_R = atan( m1430 * width / ( sa0 - sa ) );
470 if ( temp_R < 0 ) temp_R += math_pi;
471 double deltaR = -109.7 * math_pi / 180.0 + temp_R;
473 atan( 0.226 *
q / ( 2.0 - 3.8194 * qs ) );
474 if ( temp_F < 0 ) temp_F += math_pi;
475 double deltaF = 0.1 * math_pi / 180.0 + temp_F;
476 double deltaS = deltaR + 2.0 * deltaF;
477 double t1 = 0.96 *
sin( deltaF );
478 double t2 =
sin( deltaR );
480 CF[0] =
cos( deltaF );
481 CF[1] =
sin( deltaF );
482 CS[0] =
cos( deltaS );
483 CS[1] =
sin( deltaS );
484 prop[0] = t1 * CF[0] + t2 *
CS[0];
485 prop[1] = t1 * CF[1] + t2 *
CS[1];
488void EvtDToKppipi::propagatorGS(
double mass,
double width,
double sa,
double sb,
double sc,
489 double r2,
double prop[2] ) {
491 double mass2 = mass * mass;
492 double tmp = sb - sc;
493 double tmp1 = sa + tmp;
494 double q2 = fabs( 0.25 * tmp1 * tmp1 / sa - sb );
496 double tmp2 = mass2 + tmp;
497 double q02 = fabs( 0.25 * tmp2 * tmp2 / mass2 - sb );
499 double q = sqrt( q2 );
500 double q0 = sqrt( q02 );
501 double m = sqrt( sa );
502 double q03 = q0 * q02;
503 double tmp3 = log( mass + 2 * q0 ) + 1.2760418309;
505 double h = GS1 *
q / m * ( log( m + 2 *
q ) + 1.2760418309 );
506 double h0 = GS1 * q0 / mass * tmp3;
507 double dh = h0 * ( 0.125 / q02 - 0.5 / mass2 ) + GS3 / mass2;
508 double d = GS2 / q02 * tmp3 + GS3 * mass / q0 - GS4 * mass / q03;
509 double f = mass2 / q03 * ( q2 * ( h - h0 ) + ( mass2 - sa ) * q02 * dh );
511 a[0] = 1.0 + d * width / mass;
513 b[0] = mass2 - sa + width *
f;
514 b[1] = -mass * width * widl1( mass2, mass, sa, sb, sc, r2 );
515 Com_Divide( a, b, prop );
518double EvtDToKppipi::DDalitz(
double P1[4],
double P2[4],
double P3[4],
int Ang,
521 double temp_PDF, v_re;
524 double B[2], s1, s2, s3, sR, sD;
525 for (
int i = 0; i < 4; i++ )
527 pR[i] = P1[i] + P2[i];
528 pD[i] = pR[i] + P3[i];
530 s1 = SCADot( P1, P1 );
531 s2 = SCADot( P2, P2 );
532 s3 = SCADot( P3, P3 );
533 sR = SCADot( pR, pR );
534 sD = SCADot( pD, pD );
536 for (
int i = 0; i != 4; i++ )
538 for (
int j = 0; j != 4; j++ )
542 if ( i == 0 ) G[i][j] = 1;
556 B[0] = barrier( 1, sR, s1, s2, 3.0, mass );
557 B[1] = barrier( 1, sD, sR, s3, 5.0, mDp );
562 for (
int i = 0; i < 4; i++ ) { temp_PDF += t1[i] * T1[i] * G[i][i]; }
566 B[0] = barrier( 2, sR, s1, s2, 3.0, mass );
567 B[1] = barrier( 2, sD, sR, s3, 5.0, mDp );
568 double t2[4][4], T2[4][4];
572 for (
int i = 0; i < 4; i++ )
574 for (
int j = 0; j < 4; j++ ) { temp_PDF += t2[i][j] * T2[j][i] * G[i][i] * G[j][j]; }
577 v_re = temp_PDF *
B[0] *
B[1];
581void EvtDToKppipi::rhoMTX(
int i,
int j,
double s,
double Rho[2] ) {
585 double mpi = 0.13957;
586 if ( i == j && i == 0 )
588 double m2 = 0.13957 * 0.13957;
589 if ( ( 1 - ( 4 *
m2 ) /
s ) > 0 )
591 rhoijx = sqrt( 1.0f - ( 4 *
m2 ) /
s );
596 rhoijy = sqrt( ( 4 *
m2 ) /
s - 1.0f );
600 if ( i == j && i == 1 )
602 double m2 = 0.49368 * 0.49368;
603 if ( ( 1 - ( 4 *
m2 ) /
s ) > 0 )
605 rhoijx = sqrt( 1.0f - ( 4 *
m2 ) /
s );
610 rhoijy = sqrt( ( 4 *
m2 ) /
s - 1.0f );
614 if ( i == j && i == 2 )
616 rhoijx = CalRho4pi(
s );
619 if ( i == j && i == 3 )
621 double m2 = 0.547862 * 0.547862;
622 if ( ( 1 - ( 4 *
m2 ) /
s ) > 0 )
624 rhoijx = sqrt( 1.0f - ( 4 *
m2 ) /
s );
629 rhoijy = sqrt( ( 4 *
m2 ) /
s - 1.0f );
633 if ( i == j && i == 4 )
635 double m_1 = 0.547862;
636 double m_2 = 0.95778;
637 double mp2 = ( m_1 + m_2 ) * ( m_1 + m_2 );
638 double mm2 = ( m_1 - m_2 ) * ( m_1 - m_2 );
639 if ( ( 1 - mp2 /
s ) > 0 )
641 rhoijx = sqrt( 1.0f - mp2 /
s );
646 rhoijy = sqrt( mp2 /
s - 1.0f );
661void EvtDToKppipi::KMTX(
int i,
int j,
double s,
double KM[2] ) {
665 double mpi = 0.13957;
666 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206 };
668 double g1[5] = { 0.22889, -0.55377, 0.00000, -0.39899, -0.34639 };
669 double g2[5] = { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503 };
670 double g3[5] = { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681 };
671 double g4[5] = { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984 };
672 double g5[5] = { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358 };
674 double f1[5] = { 0.23399, 0.15044, -0.20545, 0.32825, 0.35412 };
676 double upimag[5] = { 0, 0, 0, 0, 0 };
678 for (
int k = 0; k < 5; k++ ) { upimag[k] = 0; }
679 double ss0 = -3.92637;
683 if ( i == 0 || j == 0 )
685 Kijx = ( g1[i] * g1[j] / ( m[0] * m[0] -
s ) + g2[i] * g2[j] / ( m[1] * m[1] -
s ) +
686 g3[i] * g3[j] / ( m[2] * m[2] -
s ) + g4[i] * g4[j] / ( m[3] * m[3] -
s ) +
687 g5[i] * g5[j] / ( m[4] * m[4] -
s ) +
f1[j] * ( 1 - ss0 ) / (
s - ss0 ) ) *
688 ( 1 - sA0 ) / (
s - sA0 ) * (
s - sA *
mpi *
mpi * 0.5 );
690 ( g1[i] * g1[j] * upimag[0] + g2[i] * g2[j] * upimag[1] + g3[i] * g3[j] * upimag[2] +
691 g4[i] * g4[j] * upimag[3] + g5[i] * g5[j] * upimag[4] ) *
692 ( 1 - sA0 ) / (
s - sA0 ) * (
s - sA *
mpi *
mpi * 0.5 );
697 Kijx = ( g1[i] * g1[j] / ( m[0] * m[0] -
s ) + g2[i] * g2[j] / ( m[1] * m[1] -
s ) +
698 g3[i] * g3[j] / ( m[2] * m[2] -
s ) + g4[i] * g4[j] / ( m[3] * m[3] -
s ) +
699 g5[i] * g5[j] / ( m[4] * m[4] -
s ) ) *
700 ( 1 - sA0 ) / (
s - sA0 ) * (
s - sA *
mpi *
mpi * 0.5 );
702 ( g1[i] * g1[j] * upimag[0] + g2[i] * g2[j] * upimag[1] + g3[i] * g3[j] * upimag[2] +
703 g4[i] * g4[j] * upimag[3] + g5[i] * g5[j] * upimag[4] ) *
704 ( 1 - sA0 ) / (
s - sA0 ) * (
s - sA *
mpi *
mpi * 0.5 );
711void EvtDToKppipi::IMTX(
int i,
int j,
double IMTX[2] ) {
730void EvtDToKppipi::FMTX(
double Kijx,
double Kijy,
double rhojjx,
double rhojjy,
int i,
int j,
736 double tmpx = Kijx * rhojjx - Kijy * rhojjy;
737 double tmpy = Kijy * rhojjx + Kijx * rhojjy;
741 Fijx = imtx[0] + tmpy;
748void EvtDToKppipi::PVTR(
int ID,
double s,
double PV[2] ) {
752 double m[5] = { 0.65100, 1.20360, 1.55817, 1.21000, 1.82206 };
754 double g[5][5] = { { 0.22889, -0.55377, 0.00000, -0.39899, -0.34639 },
755 { 0.94128, 0.55095, 0.00000, 0.39065, 0.31503 },
756 { 0.36856, 0.23888, 0.55639, 0.18340, 0.18681 },
757 { 0.33650, 0.40907, 0.85679, 0.19906, -0.00984 },
758 { 0.18171, -0.17558, -0.79658, -0.00355, 0.22358 } };
760 double betax[5], betay[5], fprodx[5], fprody[5];
762 betax[0] = 8.5 *
cos( 68.5 * 3.1415926 / 180.0 );
763 betay[0] = 8.5 *
sin( 68.5 * 3.1415926 / 180.0 );
764 betax[1] = 12.2 *
cos( 24.0 * 3.1415926 / 180.0 );
765 betay[1] = 12.2 *
sin( 24.0 * 3.1415926 / 180.0 );
766 betax[2] = 29.2 *
cos( -0.1 * 3.1415926 / 180.0 );
767 betay[2] = 29.2 *
sin( -0.1 * 3.1415926 / 180.0 );
768 betax[3] = 10.8 *
cos( -51.9 * 3.1415926 / 180.0 );
769 betay[3] = 10.8 *
sin( -51.9 * 3.1415926 / 180.0 );
773 fprodx[0] = 8.0 *
cos( -126.0 * 3.1415926 / 180.0 );
774 fprody[0] = 8.0 *
sin( -126.0 * 3.1415926 / 180.0 );
775 fprodx[1] = 26.3 *
cos( -152.3 * 3.1415926 / 180.0 );
776 fprody[1] = 26.3 *
sin( -152.3 * 3.1415926 / 180.0 );
777 fprodx[2] = 33.0 *
cos( -93.2 * 3.1415926 / 180.0 );
778 fprody[2] = 33.0 *
sin( -93.2 * 3.1415926 / 180.0 );
779 fprodx[3] = 26.2 *
cos( -121.4 * 3.1415926 / 180.0 );
780 fprody[3] = 26.2 *
sin( -121.4 * 3.1415926 / 180.0 );
784 double V0x = 0.0, V0y = 0.0, V1x = 0.0, V1y = 0.0;
785 double s0_prod = -0.07;
787 for (
int k = 0; k < 5; k++ )
789 V0x += betax[k] * g[k][ID] / ( m[k] * m[k] -
s );
790 V0y += betay[k] * g[k][ID] / ( m[k] * m[k] -
s );
792 V1x += ( 1. - s0_prod ) / (
s - s0_prod ) * fprodx[ID];
793 V1y += ( 1. - s0_prod ) / (
s - s0_prod ) * fprody[ID];
803void EvtDToKppipi::FINVMTX(
double s,
double* FINVx,
double* FINVy ) {
805 int P[5] = { 0, 1, 2, 3, 4 };
822 for (
int k = 0; k < 5; k++ )
824 rhoMTX( k, k,
s, rho );
825 double rhokkx = rho[0];
826 double rhokky = rho[1];
829 for (
int l = k; l < 5; l++ )
842 for (
int k = 0; k < 5; k++ )
844 for (
int l = 0; l < 5; l++ )
846 FMTX( Lx[k][l], Ly[k][l], Ux[l][l], Uy[l][l], k, l, AA );
854 for (
int k = 0; k < 5; k++ )
856 double tmprM = ( Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k] );
858 for (
int l = k; l < 5; l++ )
860 double tmprF = ( Fx[l][k] * Fx[l][k] + Fy[l][k] * Fy[l][k] );
861 if ( tmprM <= tmprF )
872 for (
int l = 0; l < 5; l++ )
875 double tmpFx = Fx[k][l];
876 double tmpFy = Fy[k][l];
878 Fx[k][l] = Fx[tmpID][l];
879 Fy[k][l] = Fy[tmpID][l];
881 Fx[tmpID][l] = tmpFx;
882 Fy[tmpID][l] = tmpFy;
884 for (
int l = k + 1; l < 5; l++ )
886 double rFkk = Fx[k][k] * Fx[k][k] + Fy[k][k] * Fy[k][k];
887 double Fxlk = Fx[l][k];
888 double Fylk = Fy[l][k];
889 double Fxkk = Fx[k][k];
890 double Fykk = Fy[k][k];
891 Fx[l][k] = ( Fxlk * Fxkk + Fylk * Fykk ) / rFkk;
892 Fy[l][k] = ( Fylk * Fxkk - Fxlk * Fykk ) / rFkk;
893 for (
int m = k + 1; m < 5; m++ )
895 Fx[l][m] = Fx[l][m] - ( Fx[l][k] * Fx[k][m] - Fy[l][k] * Fy[k][m] );
896 Fy[l][m] = Fy[l][m] - ( Fx[l][k] * Fy[k][m] + Fy[l][k] * Fx[k][m] );
901 for (
int k = 0; k < 5; k++ )
903 for (
int l = 0; l < 5; l++ )
929 for (
int k = 0; k < 5; k++ )
935 double rUkk = Ux[k][k] * Ux[k][k] + Uy[k][k] * Uy[k][k];
936 UIx[k][k] = Ux[k][k] / rUkk;
937 UIy[k][k] = -1.0f * Uy[k][k] / rUkk;
939 for (
int l = ( k + 1 ); l < 5; l++ )
946 for (
int l = ( k - 1 ); l >= 0; l-- )
952 for (
int m = l + 1; m <= k; m++ )
955 double sx_tmp = sx + Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k];
956 c_sx = ( sx_tmp - sx ) - ( Ux[l][m] * UIx[m][k] - Uy[l][m] * UIy[m][k] );
960 double sy_tmp = sy + Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k];
961 c_sy = ( sy_tmp - sy ) - ( Ux[l][m] * UIy[m][k] + Uy[l][m] * UIx[m][k] );
964 UIx[l][k] = -1.0f * ( UIx[l][l] * sx - UIy[l][l] * sy );
965 UIy[l][k] = -1.0f * ( UIy[l][l] * sx + UIx[l][l] * sy );
968 for (
int l = k + 1; l < 5; l++ )
974 for (
int m = k; m < l; m++ )
977 double sx_tmp = sx + Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k];
978 c_sx = ( sx_tmp - sx ) - ( Lx[l][m] * LIx[m][k] - Ly[l][m] * LIy[m][k] );
982 double sy_tmp = sy + Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k];
983 c_sy = ( sy_tmp - sy ) - ( Lx[l][m] * LIy[m][k] + Ly[l][m] * LIx[m][k] );
986 LIx[l][k] = -1.0f * sx;
987 LIy[l][k] = -1.0f * sy;
990 for (
int m = 0; m < 5; m++ )
996 for (
int k = 0; k < 5; k++ )
998 for (
int l = 0; l < 5; l++ )
1001 if (
P[l] == m ) Plm = 1;
1003 resX = resX - c_resX;
1004 double resX_tmp = resX + ( UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l] ) * Plm;
1006 ( resX_tmp - resX ) - ( ( UIx[0][k] * LIx[k][l] - UIy[0][k] * LIy[k][l] ) * Plm );
1009 resY = resY - c_resY;
1010 double resY_tmp = resY + ( UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l] ) * Plm;
1012 ( resY_tmp - resY ) - ( ( UIx[0][k] * LIy[k][l] + UIy[0][k] * LIx[k][l] ) * Plm );
1021void EvtDToKppipi::Fvector(
double sa,
double s0,
double Fv[2] ) {
1026 double FINVx[5] = { 0, 0, 0, 0, 0 };
1027 double FINVy[5] = { 0, 0, 0, 0, 0 };
1029 FINVMTX( sa, FINVx, FINVy );
1036 for (
int j = 0; j < 5; j++ )
1041 resx = resx - c_resx;
1042 double resx_tmp = resx + ( FINVx[j] * Plx - FINVy[j] * Ply );
1043 c_resx = ( resx_tmp - resx ) - ( FINVx[j] * Plx - FINVy[j] * Ply );
1046 resy = resy - c_resy;
1047 double resy_tmp = resy + ( FINVx[j] * Ply + FINVy[j] * Plx );
1048 c_resy = ( resy_tmp - resy ) - ( FINVx[j] * Ply + FINVy[j] * Plx );
1056void EvtDToKppipi::calEva(
double* Kp,
double* Pip,
double* Pim,
double* mass1,
double* width1,
1057 double* amp,
double* phase,
int* g0,
int* spin,
int* modetype,
1058 int nstates,
double& Result,
double* r0,
double* r1 ) {
1060 double P12[4], P23[4], P13[4];
1061 double cof[2], amp_PDF[2], PDF[2];
1065 double Realpipis, Imagpipis;
1067 double s12, s13, s23;
1068 for (
int i = 0; i < 4; i++ )
1070 P12[i] = Kp[i] + Pip[i];
1071 P13[i] = Kp[i] + Pim[i];
1072 P23[i] = Pip[i] + Pim[i];
1074 s1 = SCADot( Kp, Kp );
1075 s2 = SCADot( Pip, Pip );
1076 s3 = SCADot( Pim, Pim );
1078 s12 = SCADot( P12, P12 );
1079 s13 = SCADot( P13, P13 );
1080 s23 = SCADot( P23, P23 );
1082 double pro[2], temp_PDF, pro1[2], temp_PDF1, pro2[2], temp_PDF2, amp_tmp[2];
1090 for (
int i = 0; i < nstates; i++ )
1094 mass1sq = mass1[i] * mass1[i];
1095 cof[0] = amp[i] *
cos( phase[i] );
1096 cof[1] = amp[i] *
sin( phase[i] );
1099 if ( modetype[i] == 12 )
1101 temp_PDF = DDalitz( Kp, Pip, Pim, spin[i], mass1[i] );
1108 amp_tmp[0] = temp_PDF * pro[0];
1109 amp_tmp[1] = temp_PDF * pro[1];
1112 if ( modetype[i] == 13 )
1114 temp_PDF = DDalitz( Kp, Pim, Pip, spin[i], mass1[i] );
1115 if ( g0[i] == 1 ) propagatorRBW( mass1[i], width1[i], s13, s1, s3, rRes2, spin[i], pro );
1116 if ( g0[i] == 4 ) KPiSLASS( s13, s1, s3, pro );
1123 amp_tmp[0] = temp_PDF * pro[0];
1124 amp_tmp[1] = temp_PDF * pro[1];
1127 if ( modetype[i] == 23 )
1129 temp_PDF = DDalitz( Pip, Pim, Kp, spin[i], mass1[i] );
1132 Fvector( s23, -0.07, Fv );
1141 amp_tmp[0] = temp_PDF * Realpipis;
1142 amp_tmp[1] = temp_PDF * Imagpipis;
1144 if ( g0[i] == 4 ) propagatorFlatte( mass1[i], width1[i], s23, pro );
1145 if ( g0[i] == 1 ) propagatorGS( mass1[i], width1[i], s23, s2, s3, rRes2, pro );
1146 if ( g0[i] == 2 ) propagatorRBW( mass1[i], width1[i], s23, s2, s3, rRes2, spin[i], pro );
1152 if ( g0[i] == 500 ) propagatorsigma500( s23, s2, s3, pro );
1153 if ( g0[i] != 6 ) amp_tmp[0] = temp_PDF * pro[0];
1154 if ( g0[i] != 6 ) amp_tmp[1] = temp_PDF * pro[1];
1157 if ( modetype[i] == 132 )
1159 KPiSLASS( s13, s1, s3, Amp_KPiS );
1160 amp_tmp[0] = Amp_KPiS[0];
1161 amp_tmp[1] = Amp_KPiS[1];
1164 Com_Multi( amp_tmp, cof, amp_PDF );
1165 PDF[0] += amp_PDF[0];
1166 PDF[1] += amp_PDF[1];
1168 double value = PDF[0] * PDF[0] + PDF[1] * PDF[1];
1169 if ( value <= 0 ) value = 1e-20;
double P(RecMdcKalTrack *trk)
TFile f("ana_bhabha660a_dqa_mcPat_zy_old.root")
EvtComplex exp(const EvtComplex &c)
*******INTEGER m_nBinMax INTEGER m_NdiMax !No of bins in histogram for cell exploration division $ !Last vertex $ !Last active cell $ !Last cell in buffer $ !No of sampling when dividing cell $ !No of function total $ !Flag for random ceel for $ !Flag for type of for WtMax $ !Flag which decides whether vertices are included in the sampling $ entire domain is hyp !Maximum effective eevents per saves r n generator level $ !Flag for chat level in !Latex Output unit
double sin(const BesAngle a)
double cos(const BesAngle a)
****INTEGER imax DOUBLE PRECISION m_pi *DOUBLE PRECISION m_amfin DOUBLE PRECISION m_Chfin DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_sinw2 DOUBLE PRECISION m_GFermi DOUBLE PRECISION m_MfinMin DOUBLE PRECISION m_ta2 INTEGER m_out INTEGER m_KeyFSR INTEGER m_KeyQCD *COMMON c_Semalib $ !copy of input $ !CMS energy $ !beam mass $ !final mass $ !beam charge $ !final charge $ !smallest final mass $ !Z mass $ !Z width $ !EW mixing angle $ !Gmu Fermi $ alphaQED at q
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA ** Rho(770) and Omega(782) are taken from CMD-2 F_pi fit *(hep-ex/9904027)
static const double radToDegrees
void decay(EvtParticle *p)
void getName(std::string &name)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
void checkNDaug(int d1, int d2=-1)
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
void setProb(double prob)
const EvtVector4R & getP4() const
EvtParticle * getDaug(int i)
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)