50 width[1] = 0.044183653178315;
51 width[2] = 0.541879469380012;
52 width[3] = 0.148423336450619;
54 mass[1] = 0.894781734682169;
55 mass[2] = 1.3622013558915;
56 mass[3] = 0.779143408171384;
58 phi[0] = 2.34794687054858;
59 rho[0] = 0.0759345115620669;
60 phi[1] = -2.24641399153466;
61 rho[1] = 0.0383327604903577;
62 phi[2] = 2.48955684856045;
63 rho[2] = 0.0931445480476023;
68 phi[4] = -2.10558220063012;
69 rho[4] = 0.347041869435286;
70 phi[5] = 1.47445088061872;
71 phi[6] = 3.00243265559304;
72 rho[5] = 0.00965088341753795;
73 rho[6] = 0.120536507325731;
74 phi[7] = -2.45477499325158;
75 rho[7] = 0.101419048440676;
76 phi[8] = -1.35809992343491;
77 rho[8] = 4.28149643321317;
78 phi[9] = -2.45149221243198;
79 rho[9] = 0.339492272598394;
80 phi[10] = -0.17419389225461;
81 rho[10] = -0.143619437541254;
83 phi[11] = -2.08744386934208;
84 rho[11] = 0.296286583716349;
87 phi[13] = -0.432190571560873;
88 rho[13] = 0.657344690733276;
89 phi[14] = -1.39790294886865;
90 rho[14] = 1.71208007006123;
91 phi[15] = 1.58945300476228;
92 rho[15] = 3.58248347683687;
93 phi[16] = 2.58249107256307;
94 rho[16] = -1.10728829503506;
95 phi[17] = -0.163623135170955;
96 rho[17] = 1.70863070178363;
97 phi[18] = -0.134699023080211;
98 rho[18] = 0.567531283682344;
99 phi[19] = -2.12670610368279;
100 rho[19] = 0.276571752504914;
101 phi[20] = -1.3352622107357;
102 rho[20] = 0.416634203151278;
104 phi[21] = -2.91571684221842;
105 rho[21] = 0.423062298489176;
106 phi[22] = 2.4544220004327;
107 rho[22] = 1.4017194038459;
108 phi[23] = -2.23388390670423;
109 rho[23] = 4.11110400629068;
123 mass_Pi0 = 0.1349766;
131 int GG[4][4] = { { 1, 0, 0, 0 }, { 0, -1, 0, 0 }, { 0, 0, -1, 0 }, { 0, 0, 0, -1 } };
132 int EE[4][4][4][4] = {
133 { { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } },
134 { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 1 }, { 0, 0, -1, 0 } },
135 { { 0, 0, 0, 0 }, { 0, 0, 0, -1 }, { 0, 0, 0, 0 }, { 0, 1, 0, 0 } },
136 { { 0, 0, 0, 0 }, { 0, 0, 1, 0 }, { 0, -1, 0, 0 }, { 0, 0, 0, 0 } } },
137 { { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, -1 }, { 0, 0, 1, 0 } },
138 { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } },
139 { { 0, 0, 0, 1 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { -1, 0, 0, 0 } },
140 { { 0, 0, -1, 0 }, { 0, 0, 0, 0 }, { 1, 0, 0, 0 }, { 0, 0, 0, 0 } } },
141 { { { 0, 0, 0, 0 }, { 0, 0, 0, 1 }, { 0, 0, 0, 0 }, { 0, -1, 0, 0 } },
142 { { 0, 0, 0, -1 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 1, 0, 0, 0 } },
143 { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } },
144 { { 0, 1, 0, 0 }, { -1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } } },
145 { { { 0, 0, 0, 0 }, { 0, 0, -1, 0 }, { 0, 1, 0, 0 }, { 0, 0, 0, 0 } },
146 { { 0, 0, 1, 0 }, { 0, 0, 0, 0 }, { -1, 0, 0, 0 }, { 0, 0, 0, 0 } },
147 { { 0, -1, 0, 0 }, { 1, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } },
148 { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } } } };
149 for (
int i = 0; i < 4; i++ )
151 for (
int j = 0; j < 4; j++ )
154 for (
int k = 0; k < 4; k++ )
156 for (
int l = 0; l < 4; l++ ) { E[i][j][k][l] = EE[i][j][k][l]; }
192 double Km[4], Pip1[4], Pip2[4], Pim[4];
193 Km[0] = Km0.
get( 0 );
194 Pip1[0] = pi1.
get( 0 );
195 Pip2[0] =
pi2.get( 0 );
196 Pim[0] = pi3.
get( 0 );
197 Km[1] = Km0.
get( 1 );
198 Pip1[1] = pi1.
get( 1 );
199 Pip2[1] =
pi2.get( 1 );
200 Pim[1] = pi3.
get( 1 );
201 Km[2] = Km0.
get( 2 );
202 Pip1[2] = pi1.
get( 2 );
203 Pip2[2] =
pi2.get( 2 );
204 Pim[2] = pi3.
get( 2 );
205 Km[3] = Km0.
get( 3 );
206 Pip1[3] = pi1.
get( 3 );
207 Pip2[3] =
pi2.get( 3 );
208 Pim[3] = pi3.
get( 3 );
209 double prob = calPDF( Km, Pip1, Pip2, Pim );
214double EvtD0ToKpipipi::calPDF(
double Km[],
double Pip1[],
double Pip2[],
double Pim[] ) {
215 Km[0] = sqrt( mass_Kaon * mass_Kaon + Km[1] * Km[1] + Km[2] * Km[2] + Km[3] * Km[3] );
220 Pim[0] = sqrt(
mass_Pion *
mass_Pion + Pim[1] * Pim[1] + Pim[2] * Pim[2] + Pim[3] * Pim[3] );
229 PDF[0] = D2VV( Km, Pip1, Pip2, Pim, g ) + D2VV( Km, Pip2, Pip1, Pim, g );
231 PDF[1] = D2VV( Km, Pip1, Pip2, Pim, g ) + D2VV( Km, Pip2, Pip1, Pim, g );
233 PDF[2] = D2VV( Km, Pip1, Pip2, Pim, g ) + D2VV( Km, Pip2, Pip1, Pim, g );
237 PDF[3] = D2AP_A2VP( Km, Pip2, Pip1, Pim, g, 2 ) + D2AP_A2VP( Km, Pip1, Pip2, Pim, g, 2 );
239 PDF[4] = D2AP_A2VP( Km, Pip2, Pip1, Pim, g, 2 ) + D2AP_A2VP( Km, Pip1, Pip2, Pim, g, 2 );
243 PDF[5] = D2AP_A2VP( Pip2, Pim, Km, Pip1, g, 1 ) + D2AP_A2VP( Pip1, Pim, Km, Pip2, g, 1 );
245 PDF[6] = D2AP_A2VP( Pip2, Pim, Km, Pip1, g, 1 ) + D2AP_A2VP( Pip1, Pim, Km, Pip2, g, 1 );
249 PDF[7] = D2AP_A2VP( Pip2, Km, Pip1, Pim, g, 3 ) + D2AP_A2VP( Pip1, Km, Pip2, Pim, g, 3 );
252 PDF[8] = D2AP_A2SP( Pip2, Pim, Km, Pip1, 1 ) + D2AP_A2SP( Pip1, Pim, Km, Pip2, 1 );
256 PDF[9] = D2VS( Pip1, Pim, Km, Pip2, 1, 2 ) + D2VS( Pip2, Pim, Km, Pip1, 1, 2 );
258 PDF[10] = D2VS( Km, Pip1, Pip2, Pim, 1, 1 ) + D2VS( Km, Pip2, Pip1, Pim, 1, 1 );
260 PDF[11] = D2PP_P2VP( Pip2, Pim, Km, Pip1, 1 ) + D2PP_P2VP( Pip1, Pim, Km, Pip2, 1 );
267 PDF[13] = D2AP_A2VP( Pip2, Km, Pip1, Pim, g, 3 ) + D2AP_A2VP( Pip1, Km, Pip2, Pim, g, 3 );
269 PDF[14] = PHSP( Km, Pip1 ) + PHSP( Km, Pip2 );
274 PDF[15] = D2VV( Km, Pip1, Pip2, Pim, g ) + D2VV( Km, Pip2, Pip1, Pim, g );
276 PDF[16] = D2VS( Km, Pip1, Pip2, Pim, 0, 1 ) + D2VS( Km, Pip2, Pip1, Pim, 0, 1 );
278 PDF[17] = D2VS( Pip1, Pim, Km, Pip2, 0, 2 ) + D2VS( Pip2, Pim, Km, Pip1, 0, 2 );
280 PDF[18] = D2PP_P2VP( Pip2, Km, Pip1, Pim, 2 ) + D2PP_P2VP( Pip1, Km, Pip2, Pim, 2 );
282 PDF[19] = D2VP_V2VP( Pip2, Pim, Km, Pip1, 1 ) + D2VP_V2VP( Pip1, Pim, Km, Pip2, 1 );
284 PDF[20] = D2VP_V2VP( Pip2, Km, Pip1, Pim, 2 ) + D2VP_V2VP( Pip1, Km, Pip2, Pim, 2 );
286 PDF[21] = D2TS( Km, Pip1, Pip2, Pim, 1 ) + D2TS( Km, Pip2, Pip1, Pim, 1 );
287 PDF[22] = D2TS( Pip1, Pim, Km, Pip2, 2 ) + D2TS( Pip2, Pim, Km, Pip1, 2 );
288 PDF[23] = D2AP_A2SP( Km, Pip2, Pip1, Pim, 2 ) + D2AP_A2SP( Km, Pip1, Pip2, Pim, 2 );
293 for (
int i = 0; i != 24; i++ )
297 pdf = pdf + cof * PDF[i];
299 module = conj( pdf ) * pdf;
301 value =
real( module );
302 return ( value <= 0 ) ? 1e-20 : value;
305EvtComplex EvtD0ToKpipipi::KPiSFormfactor(
double sa,
double sb,
double sc,
double r ) {
306 double m1430 = 1.463;
307 double sa0 = m1430 * m1430;
308 double w1430 = 0.233;
309 double q0 = ( sa0 + sb - sc ) * ( sa0 + sb - sc ) / ( 4 * sa0 ) - sb;
310 if ( q0 < 0 ) q0 = 1e-16;
311 double qs = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
312 double q = sqrt( qs );
313 double width = w1430 *
q * m1430 / sqrt( sa * q0 );
314 double temp_R = atan( m1430 * width / ( sa0 - sa ) );
315 if ( temp_R < 0 ) temp_R += math_pi;
316 double deltaR = -5.31 + temp_R;
317 double temp_F = atan( 2 * 1.07 *
q / ( 2 + ( -1.8 ) * 1.07 * qs ) );
318 if ( temp_F < 0 ) temp_F += math_pi;
319 double deltaF = 2.33 + temp_F;
320 EvtComplex cR(
cos( deltaR ),
sin( deltaR ) );
321 EvtComplex cF(
cos( deltaF ),
sin( deltaF ) );
322 EvtComplex amp = 0.8 *
sin( deltaF ) * cF +
sin( deltaR ) * cR * cF * cF;
326EvtComplex EvtD0ToKpipipi::D2VV(
double P1[],
double P2[],
double P3[],
double P4[],
328 double t1V1[4], t1V2[4], t1D[4], t2D[4][4];
330 EvtComplex amp_PDF( 0, 0 );
333 double sa[3], sb[3], sc[3],
B[3];
334 double pV1[4], pV2[4], pD[4];
335 for (
int i = 0; i != 4; i++ )
337 pV1[i] = P1[i] + P2[i];
338 pV2[i] = P3[i] + P4[i];
339 pD[i] = pV1[i] + pV2[i];
341 sa[0] = dot( pV1, pV1 );
342 sb[0] = dot( P1, P1 );
343 sc[0] = dot( P2, P2 );
344 sa[1] = dot( pV2, pV2 );
345 sb[1] = dot( P3, P3 );
346 sc[1] = dot( P4, P4 );
347 sa[2] = dot( pD, pD );
351 { pro[1] = propagatorGS( mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1 ); }
353 { pro[0] = propagatorRBW( mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1 ); }
354 if ( g[0] == 0 ) pro[0] = 1;
355 if ( g[1] == 0 ) pro[1] = 1;
356 B[0] = barrier( 1, sa[0], sb[0], sc[0], rRes );
357 B[1] = barrier( 1, sa[1], sb[1], sc[1], rRes );
358 calt1( P1, P2, t1V1 );
359 calt1( P3, P4, t1V2 );
362 for (
int i = 0; i != 4; i++ ) { temp_PDF += ( G[i][i] ) * t1V1[i] * t1V2[i]; }
367 calt1( pV1, pV2, t1D );
368 for (
int i = 0; i != 4; i++ )
370 for (
int j = 0; j != 4; j++ )
372 for (
int k = 0; k != 4; k++ )
374 for (
int l = 0; l != 4; l++ )
376 temp_PDF += E[i][j][k][l] * pD[i] * t1D[j] * t1V1[k] * t1V2[l] * ( G[i][i] ) *
377 ( G[j][j] ) * ( G[l][l] ) * ( G[k][k] );
382 B[2] = barrier( 1, sa[2], sb[2], sc[2], rD );
386 calt2( pV1, pV2, t2D );
387 for (
int i = 0; i != 4; i++ )
389 for (
int j = 0; j != 4; j++ )
390 { temp_PDF += t2D[i][j] * t1V1[i] * t1V2[j] * ( G[i][i] ) * ( G[j][j] ); }
392 B[2] = barrier( 2, sa[2], sb[2], sc[2], rD );
394 amp_PDF = temp_PDF *
B[0] *
B[1] *
B[2] * pro[0] * pro[1];
398EvtComplex EvtD0ToKpipipi::D2AP_A2VP(
double P1[],
double P2[],
double P3[],
double P4[],
399 int g[],
int flag ) {
403 EvtComplex amp_PDF( 0, 0 );
405 double t1V[4], t1D[4], t2A[4][4];
406 double sa[3], sb[3], sc[3],
B[3];
407 double pV[4], pA[4], pD[4];
408 for (
int i = 0; i != 4; i++ )
410 pV[i] = P3[i] + P4[i];
411 pA[i] = pV[i] + P2[i];
412 pD[i] = pA[i] + P1[i];
414 sa[0] = dot( pV, pV );
415 sb[0] = dot( P3, P3 );
416 sc[0] = dot( P4, P4 );
417 sa[1] = dot( pA, pA );
419 sc[1] = dot( P2, P2 );
420 sa[2] = dot( pD, pD );
422 sc[2] = dot( P1, P1 );
425 if (
flag == 1 ) pro[0] = propagatorRBW( mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1 );
427 pro[0] = propagatorGS( mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1 );
431 if (
flag == 1 ) pro[1] = propogator( mass[0], width[0], sa[1] );
433 pro[1] = propagatorRBW( mass[2], width[2], sa[1], sb[1], sc[1], rRes, g[2] );
434 if (
flag == 3 ) pro[1] = propogator( mass[0], width[0], sa[1] );
436 if ( g[0] == 0 ) pro[0] = 1;
437 if ( g[1] == 0 ) pro[1] = 1;
438 B[0] = barrier( 1, sa[0], sb[0], sc[0], rRes );
439 B[2] = barrier( 1, sa[2], sb[2], sc[2], rD );
440 calt1( P3, P4, t1V );
441 calt1( pA, P1, t1D );
444 for (
int i = 0; i != 4; i++ )
446 for (
int j = 0; j != 4; j++ )
449 t1D[i] * ( G[i][j] - pA[i] * pA[j] / sa[1] ) * t1V[j] * ( G[i][i] ) * ( G[j][j] );
456 calt2( pV, P2, t2A );
457 for (
int i = 0; i != 4; i++ )
459 for (
int j = 0; j != 4; j++ )
460 { temp_PDF += t1D[i] * t2A[i][j] * t1V[j] * ( G[i][i] ) * ( G[j][j] ); }
462 B[1] = barrier( 2, sa[1], sb[1], sc[1], rRes );
464 amp_PDF = temp_PDF *
B[0] *
B[1] *
B[2] * pro[0] * pro[1];
467EvtComplex EvtD0ToKpipipi::D2AP_A2SP(
double P1[],
double P2[],
double P3[],
double P4[],
471 EvtComplex amp_PDF( 0, 0 );
473 double sa[3], sb[3], sc[3],
B[3];
474 double t1D[4], t1A[4];
475 double pS[4], pA[4], pD[4];
476 for (
int i = 0; i != 4; i++ )
478 pS[i] = P3[i] + P4[i];
479 pA[i] = pS[i] + P2[i];
480 pD[i] = pA[i] + P1[i];
482 sa[0] = dot( pS, pS );
483 sb[0] = dot( P3, P3 );
484 sc[0] = dot( P4, P4 );
485 sa[1] = dot( pA, pA );
487 sc[1] = dot( P2, P2 );
488 sa[2] = dot( pD, pD );
490 sc[2] = dot( P1, P1 );
491 B[1] = barrier( 1, sa[1], sb[1], sc[1], rRes );
492 B[2] = barrier( 1, sa[2], sb[2], sc[2], rD );
493 calt1( pA, P1, t1D );
494 calt1( pS, P2, t1A );
495 for (
int i = 0; i != 4; i++ ) { temp_PDF += t1D[i] * t1A[i] * ( G[i][i] ); }
496 amp_PDF = temp_PDF *
B[1] *
B[2];
497 if (
flag == 1 ) amp_PDF *= KPiSFormfactor( sa[0], sb[0], sc[0], rRes );
500EvtComplex EvtD0ToKpipipi::D2PP_P2VP(
double P1[],
double P2[],
double P3[],
double P4[],
504 EvtComplex amp_PDF( 0, 0 );
506 double sa[3], sb[3], sc[3],
B[3];
508 double pV[4], pP[4], pD[4];
509 for (
int i = 0; i != 4; i++ )
511 pV[i] = P3[i] + P4[i];
512 pP[i] = pV[i] + P2[i];
513 pD[i] = pP[i] + P1[i];
515 sa[0] = dot( pV, pV );
516 sb[0] = dot( P3, P3 );
517 sc[0] = dot( P4, P4 );
518 sa[1] = dot( pP, pP );
520 sc[1] = dot( P2, P2 );
521 sa[2] = dot( pD, pD );
523 sc[2] = dot( P1, P1 );
524 B[0] = barrier( 1, sa[0], sb[0], sc[0], rRes );
525 B[1] = barrier( 1, sa[1], sb[1], sc[1], rRes );
526 if (
flag == 1 ) pro = propagatorRBW( mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1 );
527 if (
flag == 2 ) pro = propagatorGS( mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1 );
528 calt1( P3, P4, t1V );
529 for (
int i = 0; i != 4; i++ ) { temp_PDF += P2[i] * t1V[i] * ( G[i][i] ); }
530 amp_PDF = temp_PDF *
B[0] *
B[1] * pro;
533EvtComplex EvtD0ToKpipipi::D2VP_V2VP(
double P1[],
double P2[],
double P3[],
double P4[],
537 EvtComplex amp_PDF( 0, 0 );
539 double sa[3], sb[3], sc[3],
B[3];
540 double pV1[4], pV2[4], qV1[4], qV2[4], pD[4];
541 for (
int i = 0; i != 4; i++ )
543 pV2[i] = P3[i] + P4[i];
544 qV2[i] = P3[i] - P4[i];
545 pV1[i] = pV2[i] + P2[i];
546 qV1[i] = pV2[i] - P2[i];
547 pD[i] = pV1[i] + P1[i];
549 for (
int i = 0; i != 4; i++ )
551 for (
int j = 0; j != 4; j++ )
553 for (
int k = 0; k != 4; k++ )
555 for (
int l = 0; l != 4; l++ )
557 temp_PDF += E[i][j][k][l] * pV1[i] * qV1[j] * P1[k] * qV2[l] * ( G[i][i] ) *
558 ( G[j][j] ) * ( G[k][k] ) * ( G[l][l] );
563 sa[0] = dot( pV2, pV2 );
564 sb[0] = dot( P3, P3 );
565 sc[0] = dot( P4, P4 );
566 sa[1] = dot( pV1, pV1 );
568 sc[1] = dot( P2, P2 );
569 sa[2] = dot( pD, pD );
571 sc[2] = dot( P1, P1 );
572 if (
flag == 1 ) pro = propagatorRBW( mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1 );
573 if (
flag == 2 ) pro = propagatorGS( mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1 );
574 B[0] = barrier( 1, sa[0], sb[0], sc[0], rRes );
575 B[1] = barrier( 1, sa[1], sb[1], sc[1], rRes );
576 B[2] = barrier( 1, sa[2], sb[2], sc[2], rD );
577 amp_PDF = temp_PDF *
B[0] *
B[1] *
B[2] * pro;
580EvtComplex EvtD0ToKpipipi::D2VS(
double P1[],
double P2[],
double P3[],
double P4[],
int g,
584 EvtComplex amp_PDF( 0, 0 );
586 double sa[3], sb[3], sc[3],
B[3];
587 double t1D[4], t1V[4];
588 double pS[4], pV[4], pD[4];
589 for (
int i = 0; i != 4; i++ )
591 pS[i] = P3[i] + P4[i];
592 pV[i] = P1[i] + P2[i];
593 pD[i] = pS[i] + pV[i];
595 sa[0] = dot( pS, pS );
596 sb[0] = dot( P3, P3 );
597 sc[0] = dot( P4, P4 );
598 sa[1] = dot( pV, pV );
599 sb[1] = dot( P1, P1 );
600 sc[1] = dot( P2, P2 );
601 sa[2] = dot( pD, pD );
606 if (
flag == 2 ) pro = propagatorGS( mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1 );
607 if (
flag == 1 ) pro = propagatorRBW( mass[1], width[1], sa[1], sb[1], sc[1], rRes, 1 );
609 if ( g == 0 ) pro = 1;
610 B[1] = barrier( 1, sa[1], sb[1], sc[1], rRes );
611 B[2] = barrier( 1, sa[2], sb[2], sc[2], rD );
612 calt1( P1, P2, t1V );
613 calt1( pS, pV, t1D );
614 for (
int i = 0; i != 4; i++ ) { temp_PDF += G[i][i] * t1D[i] * t1V[i]; }
615 amp_PDF = temp_PDF *
B[1] *
B[2] * pro;
616 if (
flag == 2 ) amp_PDF *= KPiSFormfactor( sa[0], sb[0], sc[0], rRes );
619EvtComplex EvtD0ToKpipipi::D2TS(
double P1[],
double P2[],
double P3[],
double P4[],
623 EvtComplex amp_PDF( 0, 0 );
624 double sa[3], sb[3], sc[3],
B[3];
625 double t2D[4][4], t2T[4][4];
626 double pS[4], pT[4], pD[4];
627 for (
int i = 0; i != 4; i++ )
629 pS[i] = P3[i] + P4[i];
630 pT[i] = P1[i] + P2[i];
631 pD[i] = pT[i] + pS[i];
633 sa[0] = dot( pT, pT );
634 sb[0] = dot( P1, P1 );
635 sc[0] = dot( P2, P2 );
636 sa[1] = dot( pS, pS );
637 sb[1] = dot( P3, P3 );
638 sc[1] = dot( P4, P4 );
639 sa[2] = dot( pD, pD );
642 B[0] = barrier( 2, sa[0], sb[0], sc[0], rRes );
643 B[2] = barrier( 2, sa[2], sb[2], sc[2], rD );
644 calt2( P1, P2, t2T );
645 calt2( pT, pS, t2D );
646 for (
int i = 0; i != 4; i++ )
648 for (
int j = 0; j != 4; j++ )
649 { temp_PDF += t2D[i][j] * t2T[j][i] * ( G[i][i] ) * ( G[j][j] ); }
651 amp_PDF = temp_PDF *
B[0] *
B[2];
652 if (
flag == 2 ) amp_PDF *= KPiSFormfactor( sa[1], sb[1], sc[1], rRes );
655EvtComplex EvtD0ToKpipipi::PHSP(
double Km[],
double Pip[] ) {
656 EvtComplex amp_PDF( 0, 0 );
659 for (
int i = 0; i != 4; i++ ) { KPi[i] = Km[i] + Pip[i]; }
660 sa = dot( KPi, KPi );
662 sc = dot( Pip, Pip );
663 amp_PDF = KPiSFormfactor( sa, sb, sc, rRes );
666double EvtD0ToKpipipi::calDalEva(
double P1[],
double P2[],
double P3[] ) {
669 EvtComplex PDF[7], cof, pdf, module;
672 for (
int i = 0; i < 4; i++ )
678 PDF[0] = Spin_factor(
P[1],
P[2],
P[0], 0 ) + Spin_factor(
P[2],
P[1],
P[0], 0 );
679 PDF[1] = Spin_factor(
P[1],
P[2],
P[0], 10 ) + Spin_factor(
P[2],
P[1],
P[0], 10 );
680 PDF[2] = Spin_factor(
P[1],
P[2],
P[0], 100 ) + Spin_factor(
P[2],
P[1],
P[0], 100 );
682 PDF[3] = Spin_factor(
P[0],
P[1],
P[2], 1 ) + Spin_factor(
P[0],
P[2],
P[1], 1 );
683 PDF[4] = Spin_factor(
P[0],
P[1],
P[2], 11 ) + Spin_factor(
P[0],
P[2],
P[1], 11 );
685 PDF[5] = Spin_factor(
P[1],
P[2],
P[0], 2 ) + Spin_factor(
P[2],
P[1],
P[0], 2 );
686 PDF[6] = Spin_factor(
P[0],
P[1],
P[2], 12 ) + Spin_factor(
P[0],
P[2],
P[1], 12 );
690 rho[1] = -1.0086e+00;
696 rho[4] = -2.5079e-01;
698 rho[5] = -4.1640e-01;
703 pdf = EvtComplex( 0, 0 );
704 for (
int i = 0; i < 7; i++ )
706 cof = EvtComplex( rho[i] *
cos( phi[i] ), rho[i] *
sin( phi[i] ) );
709 module = conj( pdf ) * pdf;
711 value =
real( module );
712 return ( value <= 0 ) ? 1e-20 : value;
714EvtComplex EvtD0ToKpipipi::Spin_factor(
double P1[],
double P2[],
double P3[],
int spin ) {
716 double R[4],
s[3], sp2, sD,
B[2];
717 for (
int i = 0; i < 4; i++ ) {
R[i] = P1[i] + P2[i]; }
719 s[1] = dot( P1, P1 );
720 s[2] = dot( P2, P2 );
723 EvtComplex amp( 0, 0 ), prop;
724 prop = getProp(
s, spin );
726 if ( spin % 10 == 0 ) { amp = prop; }
727 else if ( spin % 10 == 1 )
733 B[0] = barrier( 1,
s[0],
s[1],
s[2], 3.0 );
734 B[1] = barrier( 1, sD,
s[0], sp2, 3.0 );
735 for (
int i = 0; i < 4; i++ ) { tmp += T1[i] * t1[i] * G[i][i]; }
736 amp = tmp * prop *
B[0] *
B[1];
738 else if ( spin % 10 == 2 )
741 double T2[4][4], t2[4][4];
744 B[0] = barrier( 2,
s[0],
s[1],
s[2], 3.0 );
745 B[1] = barrier( 2, sD,
s[0], sp2, 3.0 );
746 for (
int i = 0; i < 4; i++ )
748 for (
int j = 0; j < 4; j++ ) { tmp += T2[i][j] * t2[j][i] * G[j][j] * G[i][i]; }
750 amp = tmp * prop *
B[0] *
B[1];
752 else { cout <<
"Only S, P, D wave allowed" << endl; }
765 EvtComplex prop( 1, 0 );
766 double snpi, scpi, snk, sck;
767 snpi = mass_Pi0 * mass_Pi0;
768 scpi = mass_Pion * mass_Pion;
769 sck = mass_Kaon * mass_Kaon;
773 double mass, gpipi, gkk;
777 EvtComplex ci( 0, 1 );
778 EvtComplex rhokk, rhopipi;
779 rhokk = 0.5 * ( rhofactor(
s[0], sck ) + rhofactor(
s[0], snk ) );
780 rhopipi = 1.0 / 3.0 * ( 2.0 * rhofactor(
s[0], scpi ) + rhofactor(
s[0], snpi ) );
781 prop = 1.0 / ( mass * mass -
s[0] - ci * ( gpipi * gpipi * rhopipi + gkk * gkk * rhokk ) );
783 if (
flag == 10 ) { prop = propagatorRBW( 1.35, 0.265,
s[0],
s[1],
s[2], 3.0, 0 ); }
784 if (
flag == 20 ) { prop = propagatorRBW( 1.505, 0.109,
s[0],
s[1],
s[2], 3.0, 0 ); }
785 if (
flag == 1 ) { prop = propagatorRBW( 0.896, 0.0503,
s[0],
s[1],
s[2], 3.0, 1 ); }
786 if (
flag == 11 ) { prop = propagatorRBW( 1.717, 0.322,
s[0],
s[1],
s[2], 3.0, 1 ); }
787 if (
flag == 2 ) { prop = propagatorRBW( 1.2751, 0.185,
s[0],
s[1],
s[2], 3.0, 2 ); }
788 if (
flag == 12 ) { prop = propagatorRBW( 1.4324, 0.109,
s[0],
s[1],
s[2], 3.0, 2 ); }
791 EvtComplex pole( 0.470, -0.220 );
792 prop = 1.0 / (
s[0] - pole * pole );
796EvtComplex EvtD0ToKpipipi::rhofactor(
double sx,
double sdau ) {
797 EvtComplex
one( 1, 0 );
798 EvtComplex ci( 0, 1 );
801 tmp = 1 - 4 * sdau / sx;
802 if ( tmp > 0 ) res =
one * sqrt( tmp );
803 if ( tmp < 0 ) res = ci * sqrt( fabs( tmp ) );
806EvtComplex EvtD0ToKpipipi::propogator(
double mass,
double width,
double sx )
const {
807 EvtComplex ci( 0, 1 );
808 EvtComplex prop = 1.0 / ( mass * mass - sx - ci * mass * width );
811double EvtD0ToKpipipi::wid(
double mass,
double sa,
double sb,
double sc,
double r,
813 double widm( 0. ),
q( 0. ), q0( 0. );
814 double sa0 = mass * mass;
815 double m = sqrt( sa );
816 q = Qabcs( sa, sb, sc );
817 q0 = Qabcs( sa0, sb, sc );
824 if ( l == 1 ) F = sqrt( ( 1 + z0 ) / ( 1 + z ) );
825 if ( l == 2 ) F = sqrt( ( 9 + 3 * z0 + z0 * z0 ) / ( 9 + 3 * z + z * z ) );
826 widm = pow(
t, l + 0.5 ) * mass / m * F * F;
829double EvtD0ToKpipipi::h(
double m,
double q )
const {
831 h = 2 / pi *
q / m * log( ( m + 2 *
q ) / ( 2 * mpi ) );
834double EvtD0ToKpipipi::dh(
double mass,
double q0 )
const {
835 double dh = h( mass, q0 ) * ( 1.0 / ( 8 * q0 * q0 ) - 1.0 / ( 2 * mass * mass ) ) +
836 1.0 / ( 2 * pi * mass * mass );
839double EvtD0ToKpipipi::f(
double mass,
double sx,
double q0,
double q )
const {
840 double m = sqrt( sx );
841 double f = mass * mass / ( pow( q0, 3 ) ) *
842 (
q *
q * ( h( m,
q ) - h( mass, q0 ) ) +
843 ( mass * mass - sx ) * q0 * q0 * dh( mass, q0 ) );
846double EvtD0ToKpipipi::d(
double mass,
double q0 )
const {
847 double d = 3.0 / pi * mpi * mpi / ( q0 * q0 ) * log( ( mass + 2 * q0 ) / ( 2 * mpi ) ) +
848 mass / ( 2 * pi * q0 ) - ( mpi * mpi * mass ) / ( pi * pow( q0, 3 ) );
851EvtComplex EvtD0ToKpipipi::propagatorRBW(
double mass,
double width,
double sa,
double sb,
852 double sc,
double r,
int l )
const {
853 EvtComplex ci( 0, 1 );
855 1.0 / ( mass * mass - sa - ci * mass * width * wid( mass, sa, sb, sc, r, l ) );
858EvtComplex EvtD0ToKpipipi::propagatorGS(
double mass,
double width,
double sa,
double sb,
859 double sc,
double r,
int l )
const {
860 EvtComplex ci( 0, 1 );
861 double q = Qabcs( sa, sb, sc );
862 double sa0 = mass * mass;
863 double q0 = Qabcs( sa0, sb, sc );
866 EvtComplex prop = ( 1 + d( mass, q0 ) * width / mass ) /
867 ( mass * mass - sa + width * f( mass, sa, q0,
q ) -
868 ci * mass * width * wid( mass, sa, sb, sc, r, l ) );
871double EvtD0ToKpipipi::Flatte_rhoab(
double sa,
double sb,
double sc )
const {
872 double q = Qabcs( sa, sb, sc );
873 double rho = sqrt(
q / sa );
876EvtComplex EvtD0ToKpipipi::propagatorFlatte(
double mass,
double width,
double sx,
double* sb,
878 EvtComplex ci( 0, 1 );
879 double rho1 = Flatte_rhoab( sx, sb[0], sc[0] );
880 double rho2 = Flatte_rhoab( sx, sb[1], sc[1] );
881 EvtComplex prop = 1.0 / ( mass * mass - sx - ci * ( g1 * g1 * rho1 + g2 * g2 * rho2 ) );
884double EvtD0ToKpipipi::dot(
double* a1,
double* a2 )
const {
886 for (
int i = 0; i != 4; i++ ) { dot += a1[i] * a2[i] * G[i][i]; }
889double EvtD0ToKpipipi::Qabcs(
double sa,
double sb,
double sc )
const {
890 double Qabcs = ( sa + sb - sc ) * ( sa + sb - sc ) / ( 4 * sa ) - sb;
891 if ( Qabcs < 0 ) Qabcs = 1e-16;
894double EvtD0ToKpipipi::barrier(
double l,
double sa,
double sb,
double sc,
double r )
const {
895 double q = Qabcs( sa, sb, sc );
902 if ( l == 1 ) { F = sqrt( ( 2 * z ) / ( 1 + z ) ); }
903 if ( l == 2 ) { F = sqrt( ( 13 * z * z ) / ( 9 + 3 * z + z * z ) ); }
906void EvtD0ToKpipipi::calt1(
double daug1[],
double daug2[],
double t1[] )
const {
909 for (
int i = 0; i != 4; i++ )
911 pa[i] = daug1[i] + daug2[i];
912 qa[i] = daug1[i] - daug2[i];
916 for (
int i = 0; i != 4; i++ ) { t1[i] = qa[i] - pq / p * pa[i]; }
918void EvtD0ToKpipipi::calt2(
double daug1[],
double daug2[],
double t2[][4] )
const {
921 calt1( daug1, daug2, t1 );
923 for (
int i = 0; i != 4; i++ ) { pa[i] = daug1[i] + daug2[i]; }
925 for (
int i = 0; i != 4; i++ )
927 for (
int j = 0; j != 4; j++ )
928 { t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * ( G[i][j] - pa[i] * pa[j] / p ); }
double P(RecMdcKalTrack *trk)
character *LEPTONflag integer iresonances real pi2
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
void getName(std::string &name)
void decay(EvtParticle *p)
virtual ~EvtD0ToKpipipi()
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)
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)