9#include <EvtGenBase/EvtPatches.hh>
10#include <EvtGenBase/EvtParticle.hh>
11#include <EvtGenBase/EvtGenKine.hh>
12#include <EvtGenBase/EvtPDL.hh>
13#include <EvtGenBase/EvtReport.hh>
14#include <EvtGenBase/EvtComplex.hh>
15#include <EvtGenBase/EvtDecayTable.hh>
18#include <generators/evtgen/EvtGenModelRegister.h>
19#include <generators/evtgen/models/besiii/EvtD0ToKpipipi.h>
29 EvtD0ToKpipipi::~EvtD0ToKpipipi() {}
31 std::string EvtD0ToKpipipi::getName()
36 EvtDecayBase* EvtD0ToKpipipi::clone()
38 return new EvtD0ToKpipipi;
41 void EvtD0ToKpipipi::init()
45 checkSpinParent(EvtSpinType::SCALAR);
54 width[1] = 0.044183653178315;
55 width[2] = 0.541879469380012;
56 width[3] = 0.148423336450619;
58 mass[1] = 0.894781734682169;
59 mass[2] = 1.3622013558915;
60 mass[3] = 0.779143408171384;
62 phi[0] = 2.34794687054858;
63 rho[0] = 0.0759345115620669;
64 phi[1] = -2.24641399153466;
65 rho[1] = 0.0383327604903577;
66 phi[2] = 2.48955684856045;
67 rho[2] = 0.0931445480476023;
72 phi[4] = -2.10558220063012;
73 rho[4] = 0.347041869435286;
74 phi[5] = 1.47445088061872;
75 phi[6] = 3.00243265559304;
76 rho[5] = 0.00965088341753795;
77 rho[6] = 0.120536507325731;
78 phi[7] = -2.45477499325158;
79 rho[7] = 0.101419048440676;
80 phi[8] = -1.35809992343491;
81 rho[8] = 4.28149643321317;
82 phi[9] = -2.45149221243198;
83 rho[9] = 0.339492272598394;
84 phi[10] = -0.17419389225461;
85 rho[10] = -0.143619437541254;
87 phi[11] = -2.08744386934208;
88 rho[11] = 0.296286583716349;
91 phi[13] = -0.432190571560873;
92 rho[13] = 0.657344690733276;
93 phi[14] = -1.39790294886865;
94 rho[14] = 1.71208007006123;
95 phi[15] = 1.58945300476228;
96 rho[15] = 3.58248347683687;
97 phi[16] = 2.58249107256307;
98 rho[16] = -1.10728829503506;
99 phi[17] = -0.163623135170955;
100 rho[17] = 1.70863070178363;
101 phi[18] = -0.134699023080211;
102 rho[18] = 0.567531283682344;
103 phi[19] = -2.12670610368279;
104 rho[19] = 0.276571752504914;
105 phi[20] = -1.3352622107357;
106 rho[20] = 0.416634203151278;
108 phi[21] = -2.91571684221842;
109 rho[21] = 0.423062298489176;
110 phi[22] = 2.4544220004327;
111 rho[22] = 1.4017194038459;
112 phi[23] = -2.23388390670423;
113 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} }
138 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 1, 0} },
139 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
140 {{0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}},
141 {{0, 0, -1, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0} }
143 { {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0}, {0, -1, 0, 0}},
144 {{0, 0, 0, -1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0} },
145 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
146 {{0, 1, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
148 { {{0, 0, 0, 0}, {0, 0, -1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0} },
149 {{0, 0, 1, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0} },
150 {{0, -1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
151 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
154 for (
int i = 0; i < 4; i++) {
155 for (
int j = 0; j < 4; j++) {
157 for (
int k = 0; k < 4; k++) {
158 for (
int l = 0; l < 4; l++) {
159 E[i][j][k][l] = EE[i][j][k][l];
166 void EvtD0ToKpipipi::initProbMax()
171 void EvtD0ToKpipipi::decay(EvtParticle* p)
192 p->initializePhaseSpace(getNDaug(), getDaugs());
193 EvtVector4R Km0 = p->getDaug(0)->getP4();
194 EvtVector4R pi1 = p->getDaug(1)->getP4();
195 EvtVector4R pi2 = p->getDaug(2)->getP4();
196 EvtVector4R pi3 = p->getDaug(3)->getP4();
198 double Km[4], Pip1[4], Pip2[4], Pim[4];
199 Km[0] = Km0.get(0); Pip1[0] = pi1.get(0); Pip2[0] = pi2.get(0); Pim[0] = pi3.get(0);
200 Km[1] = Km0.get(1); Pip1[1] = pi1.get(1); Pip2[1] = pi2.get(1); Pim[1] = pi3.get(1);
201 Km[2] = Km0.get(2); Pip1[2] = pi1.get(2); Pip2[2] = pi2.get(2); Pim[2] = pi3.get(2);
202 Km[3] = Km0.get(3); Pip1[3] = pi1.get(3); Pip2[3] = pi2.get(3); Pim[3] = pi3.get(3);
203 double prob =
calPDF(Km, Pip1, Pip2, Pim);
210 Km[0] =
sqrt(mass_Kaon * mass_Kaon + Km[1] * Km[1] + Km[2] * Km[2] + Km[3] * Km[3]);
211 Pip1[0] =
sqrt(mass_Pion * mass_Pion + Pip1[1] * Pip1[1] + Pip1[2] * Pip1[2] + Pip1[3] * Pip1[3]);
212 Pip2[0] =
sqrt(mass_Pion * mass_Pion + Pip2[1] * Pip2[1] + Pip2[2] * Pip2[2] + Pip2[3] * Pip2[3]);
213 Pim[0] =
sqrt(mass_Pion * mass_Pion + Pim[1] * Pim[1] + Pim[2] * Pim[2] + Pim[3] * Pim[3]);
221 PDF[0] =
D2VV(Km, Pip1, Pip2, Pim, g) +
D2VV(Km, Pip2, Pip1, Pim, g);
223 PDF[1] =
D2VV(Km, Pip1, Pip2, Pim, g) +
D2VV(Km, Pip2, Pip1, Pim, g);
225 PDF[2] =
D2VV(Km, Pip1, Pip2, Pim, g) +
D2VV(Km, Pip2, Pip1, Pim, g);
229 PDF[3] = D2AP_A2VP(Km, Pip2, Pip1, Pim, g, 2) + D2AP_A2VP(Km, Pip1, Pip2, Pim, g, 2);
231 PDF[4] = D2AP_A2VP(Km, Pip2, Pip1, Pim, g, 2) + D2AP_A2VP(Km, Pip1, Pip2, Pim, g, 2);
235 PDF[5] = D2AP_A2VP(Pip2, Pim, Km, Pip1, g, 1) + D2AP_A2VP(Pip1, Pim, Km, Pip2, g, 1);
237 PDF[6] = D2AP_A2VP(Pip2, Pim, Km, Pip1, g, 1) + D2AP_A2VP(Pip1, Pim, Km, Pip2, g, 1);
241 PDF[7] = D2AP_A2VP(Pip2, Km, Pip1, Pim, g, 3) + D2AP_A2VP(Pip1, Km, Pip2, Pim, g, 3);
244 PDF[8] = D2AP_A2SP(Pip2, Pim, Km, Pip1, 1) + D2AP_A2SP(Pip1, Pim, Km, Pip2, 1);
248 PDF[9] = D2VS(Pip1, Pim, Km, Pip2, 1, 2) + D2VS(Pip2, Pim, Km, Pip1, 1, 2);
250 PDF[10] = D2VS(Km, Pip1, Pip2, Pim, 1, 1) + D2VS(Km, Pip2, Pip1, Pim, 1, 1);
252 PDF[11] = D2PP_P2VP(Pip2, Pim, Km, Pip1, 1) + D2PP_P2VP(Pip1, Pim, Km, Pip2, 1);
258 PDF[13] = D2AP_A2VP(Pip2, Km, Pip1, Pim, g, 3) + D2AP_A2VP(Pip1, Km, Pip2, Pim, g, 3);
260 PDF[14] = PHSP(Km, Pip1) + PHSP(Km, Pip2);
262 g[0] = 0; g[1] = 0; g[2] = 0;
263 PDF[15] =
D2VV(Km, Pip1, Pip2, Pim, g) +
D2VV(Km, Pip2, Pip1, Pim, g);
265 PDF[16] = D2VS(Km, Pip1, Pip2, Pim, 0, 1) + D2VS(Km, Pip2, Pip1, Pim, 0, 1);
267 PDF[17] = D2VS(Pip1, Pim, Km, Pip2, 0, 2) + D2VS(Pip2, Pim, Km, Pip1, 0, 2);
269 PDF[18] = D2PP_P2VP(Pip2, Km, Pip1, Pim, 2) + D2PP_P2VP(Pip1, Km, Pip2, Pim, 2);
271 PDF[19] = D2VP_V2VP(Pip2, Pim, Km, Pip1, 1) + D2VP_V2VP(Pip1, Pim, Km, Pip2, 1);
273 PDF[20] = D2VP_V2VP(Pip2, Km, Pip1, Pim, 2) + D2VP_V2VP(Pip1, Km, Pip2, Pim, 2);
275 PDF[21] = D2TS(Km, Pip1, Pip2, Pim, 1) + D2TS(Km, Pip2, Pip1, Pim, 1);
276 PDF[22] = D2TS(Pip1, Pim, Km, Pip2, 2) + D2TS(Pip2, Pim, Km, Pip1, 2);
277 PDF[23] = D2AP_A2SP(Km, Pip2, Pip1, Pim, 2) + D2AP_A2SP(Km, Pip1, Pip2, Pim, 2);
280 EvtComplex pdf, module;
281 pdf = EvtComplex(0, 0);
282 for (
int i = 0; i != 24; i++) {
283 cof = EvtComplex(rho[i] * cos(phi[i]), rho[i] * sin(phi[i]));
284 pdf = pdf + cof * PDF[i];
286 module = conj(pdf) * pdf;
288 value = real(module);
289 return (value <= 0) ? 1e-20 : value;
295 double m1430 = 1.463;
296 double sa0 = m1430 * m1430;
297 double w1430 = 0.233;
298 double q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
299 if (q0 < 0) q0 = 1e-16;
300 double qs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
302 double Width = w1430 * q * m1430 /
sqrt(sa * q0);
303 double temp_R =
atan(m1430 * Width / (sa0 - sa));
304 if (temp_R < 0) temp_R += math_pi;
305 double deltaR = -5.31 + temp_R;
306 double temp_F =
atan(2 * 1.07 * q / (2 + (-1.8) * 1.07 * qs));
307 if (temp_F < 0) temp_F += math_pi;
308 double deltaF = 2.33 + temp_F;
309 EvtComplex cR(cos(deltaR), sin(deltaR));
310 EvtComplex cF(cos(deltaF), sin(deltaF));
311 EvtComplex amp = 0.8 * sin(deltaF) * cF + sin(deltaR) * cR * cF * cF;
315 EvtComplex
EvtD0ToKpipipi::D2VV(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
int* g)
317 double t1V1[4], t1V2[4], t1D[4], t2D[4][4];
319 EvtComplex amp_PDF(0, 0);
322 double sa[3], sb[3], sc[3], B[3];
323 double pV1[4], pV2[4], pD[4];
324 for (
int i = 0; i != 4; i++) {
325 pV1[i] = P1[i] + P2[i];
326 pV2[i] = P3[i] + P4[i];
327 pD[i] = pV1[i] + pV2[i];
329 sa[0] =
dot(pV1, pV1);
332 sa[1] =
dot(pV2, pV2);
339 pro[1] =
propagatorGS(mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1);
342 pro[0] =
propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
344 if (g[0] == 0) pro[0] = 1;
345 if (g[1] == 0) pro[1] = 1;
346 B[0] =
barrier(1, sa[0], sb[0], sc[0], rRes);
347 B[1] =
barrier(1, sa[1], sb[1], sc[1], rRes);
351 for (
int i = 0; i != 4; i++) {
352 temp_PDF += (G[i][i]) * t1V1[i] * t1V2[i];
357 calt1(pV1, pV2, t1D);
358 for (
int i = 0; i != 4; i++) {
359 for (
int j = 0; j != 4; j++) {
360 for (
int k = 0; k != 4; k++) {
361 for (
int l = 0; l != 4; l++) {
362 temp_PDF += E[i][j][k][l] * pD[i] * t1D[j] * t1V1[k] * t1V2[l] * (G[i][i]) * (G[j][j]) * (G[l][l]) * (G[k][k]);
367 B[2] =
barrier(1, sa[2], sb[2], sc[2], rD);
370 calt2(pV1, pV2, t2D);
371 for (
int i = 0; i != 4; i++) {
372 for (
int j = 0; j != 4; j++) {
373 temp_PDF += t2D[i][j] * t1V1[i] * t1V2[j] * (G[i][i]) * (G[j][j]);
376 B[2] =
barrier(2, sa[2], sb[2], sc[2], rD);
378 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
382 EvtComplex EvtD0ToKpipipi::D2AP_A2VP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
int* g,
const int flag)
387 EvtComplex amp_PDF(0, 0);
389 double t1V[4], t1D[4], t2A[4][4];
390 double sa[3], sb[3], sc[3], B[3];
391 double pV[4], pA[4], pD[4];
392 for (
int i = 0; i != 4; i++) {
393 pV[i] = P3[i] + P4[i];
394 pA[i] = pV[i] + P2[i];
395 pD[i] = pA[i] + P1[i];
407 if (flag == 1) pro[0] =
propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
408 if (flag == 2 || flag == 3) pro[0] =
propagatorGS(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
411 if (flag == 1) pro[1] =
propogator(mass[0], width[0], sa[1]);
412 if (flag == 2) pro[1] =
propagatorRBW(mass[2], width[2], sa[1], sb[1], sc[1], rRes, g[2]);
413 if (flag == 3) pro[1] =
propogator(mass[0], width[0], sa[1]);
415 if (g[0] == 0) pro[0] = 1;
416 if (g[1] == 0) pro[1] = 1;
417 B[0] =
barrier(1, sa[0], sb[0], sc[0], rRes);
418 B[2] =
barrier(1, sa[2], sb[2], sc[2], rD);
422 for (
int i = 0; i != 4; i++) {
423 for (
int j = 0; j != 4; j++) {
424 temp_PDF += t1D[i] * (G[i][j] - pA[i] * pA[j] / sa[1]) * t1V[j] * (G[i][i]) * (G[j][j]);
431 for (
int i = 0; i != 4; i++) {
432 for (
int j = 0; j != 4; j++) {
433 temp_PDF += t1D[i] * t2A[i][j] * t1V[j] * (G[i][i]) * (G[j][j]);
436 B[1] =
barrier(2, sa[1], sb[1], sc[1], rRes);
438 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
441 EvtComplex EvtD0ToKpipipi::D2AP_A2SP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
445 EvtComplex amp_PDF(0, 0);
447 double sa[3], sb[3], sc[3], B[3];
448 double t1D[4], t1A[4];
449 double pS[4], pA[4], pD[4];
450 for (
int i = 0; i != 4; i++) {
451 pS[i] = P3[i] + P4[i];
452 pA[i] = pS[i] + P2[i];
453 pD[i] = pA[i] + P1[i];
464 B[1] =
barrier(1, sa[1], sb[1], sc[1], rRes);
465 B[2] =
barrier(1, sa[2], sb[2], sc[2], rD);
468 for (
int i = 0; i != 4; i++) {
469 temp_PDF += t1D[i] * t1A[i] * (G[i][i]);
471 amp_PDF = temp_PDF * B[1] * B[2];
472 if (flag == 1) amp_PDF *=
KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
475 EvtComplex EvtD0ToKpipipi::D2PP_P2VP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
479 EvtComplex amp_PDF(0, 0);
481 double sa[3], sb[3], sc[3], B[3];
483 double pV[4], pP[4], pD[4];
484 for (
int i = 0; i != 4; i++) {
485 pV[i] = P3[i] + P4[i];
486 pP[i] = pV[i] + P2[i];
487 pD[i] = pP[i] + P1[i];
498 B[0] =
barrier(1, sa[0], sb[0], sc[0], rRes);
499 B[1] =
barrier(1, sa[1], sb[1], sc[1], rRes);
500 if (flag == 1) pro =
propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
501 if (flag == 2) pro =
propagatorGS(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
503 for (
int i = 0; i != 4; i++) {
504 temp_PDF += P2[i] * t1V[i] * (G[i][i]);
506 amp_PDF = temp_PDF * B[0] * B[1] * pro;
509 EvtComplex EvtD0ToKpipipi::D2VP_V2VP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
513 EvtComplex amp_PDF(0, 0);
515 double sa[3], sb[3], sc[3], B[3];
516 double pV1[4], pV2[4], qV1[4], qV2[4], pD[4];
517 for (
int i = 0; i != 4; i++) {
518 pV2[i] = P3[i] + P4[i];
519 qV2[i] = P3[i] - P4[i];
520 pV1[i] = pV2[i] + P2[i];
521 qV1[i] = pV2[i] - P2[i];
522 pD[i] = pV1[i] + P1[i];
524 for (
int i = 0; i != 4; i++) {
525 for (
int j = 0; j != 4; j++) {
526 for (
int k = 0; k != 4; k++) {
527 for (
int l = 0; l != 4; l++) {
528 temp_PDF += E[i][j][k][l] * pV1[i] * qV1[j] * P1[k] * qV2[l] * (G[i][i]) * (G[j][j]) * (G[k][k]) * (G[l][l]);
533 sa[0] =
dot(pV2, pV2);
536 sa[1] =
dot(pV1, pV1);
542 if (flag == 1) pro =
propagatorRBW(mass[1], width[1], sa[0], sb[0], sc[0], rRes, 1);
543 if (flag == 2) pro =
propagatorGS(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
544 B[0] =
barrier(1, sa[0], sb[0], sc[0], rRes);
545 B[1] =
barrier(1, sa[1], sb[1], sc[1], rRes);
546 B[2] =
barrier(1, sa[2], sb[2], sc[2], rD);
547 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro;
550 EvtComplex EvtD0ToKpipipi::D2VS(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
int g,
const int flag)
554 EvtComplex amp_PDF(0, 0);
556 double sa[3], sb[3], sc[3], B[3];
557 double t1D[4], t1V[4];
558 double pS[4], pV[4], pD[4];
559 for (
int i = 0; i != 4; i++) {
560 pS[i] = P3[i] + P4[i];
561 pV[i] = P1[i] + P2[i];
562 pD[i] = pS[i] + pV[i];
574 if (flag == 2) pro =
propagatorGS(mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1);
575 if (flag == 1) pro =
propagatorRBW(mass[1], width[1], sa[1], sb[1], sc[1], rRes, 1);
578 B[1] =
barrier(1, sa[1], sb[1], sc[1], rRes);
579 B[2] =
barrier(1, sa[2], sb[2], sc[2], rD);
582 for (
int i = 0; i != 4; i++) {
583 temp_PDF += G[i][i] * t1D[i] * t1V[i];
585 amp_PDF = temp_PDF * B[1] * B[2] * pro;
586 if (flag == 2) amp_PDF *=
KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
589 EvtComplex EvtD0ToKpipipi::D2TS(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
593 EvtComplex amp_PDF(0, 0);
594 double sa[3], sb[3], sc[3], B[3];
595 double t2D[4][4], t2T[4][4];
596 double pS[4], pT[4], pD[4];
597 for (
int i = 0; i != 4; i++) {
598 pS[i] = P3[i] + P4[i];
599 pT[i] = P1[i] + P2[i];
600 pD[i] = pT[i] + pS[i];
611 B[0] =
barrier(2, sa[0], sb[0], sc[0], rRes);
612 B[2] =
barrier(2, sa[2], sb[2], sc[2], rD);
615 for (
int i = 0; i != 4; i++) {
616 for (
int j = 0; j != 4; j++) {
617 temp_PDF += t2D[i][j] * t2T[j][i] * (G[i][i]) * (G[j][j]);
620 amp_PDF = temp_PDF * B[0] * B[2];
621 if (flag == 2) amp_PDF *=
KPiSFormfactor(sa[1], sb[1], sc[1], rRes);
624 EvtComplex EvtD0ToKpipipi::PHSP(
double* Km,
double* Pip)
626 EvtComplex amp_PDF(0, 0);
629 for (
int i = 0; i != 4; i++) {
630 KPi[i] = Km[i] + Pip[i];
641 EvtComplex prop = 1.0 / (Mass * Mass - sx - ci * Mass * Width);
646 double widm(0.), q(0.), q0(0.);
647 double sa0 = Mass * Mass;
649 q =
Qabcs(sa, sb, sc);
650 q0 =
Qabcs(sa0, sb, sc);
657 if (l == 1) F =
sqrt((1 + z0) / (1 + z));
658 if (l == 2) F =
sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
659 widm = pow(t, l + 0.5) * Mass / m * F * F;
665 h = 2 / pi * q / m * log((m + 2 * q) / (2 * mpi));
670 double dh =
h(Mass, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * Mass * Mass)) + 1.0 / (2 * pi * Mass * Mass);
676 double f = Mass * Mass / (pow(q0, 3)) * (q * q * (
h(m, q) -
h(Mass, q0)) + (Mass * Mass - sx) * q0 * q0 *
dh(Mass, q0));
681 double d = 3.0 / pi * mpi * mpi / (q0 * q0) * log((Mass + 2 * q0) / (2 * mpi)) + Mass / (2 * pi * q0) - (mpi * mpi * Mass) /
688 EvtComplex prop = 1.0 / (Mass * Mass - sa - ci * Mass * Width *
wid(Mass, sa, sb, sc, r, l));
694 double q =
Qabcs(sa, sb, sc);
695 double sa0 = Mass * Mass;
696 double q0 =
Qabcs(sa0, sb, sc);
699 EvtComplex prop = (1 +
d(Mass, q0) * Width / Mass) / (Mass * Mass - sa + Width *
f(Mass, sa, q0, q) - ci * Mass * Width *
wid(Mass,
706 for (
int i = 0; i != 4; i++) {
707 dot += a1[i] * a2[i] * G[i][i];
713 double Qabcs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
719 double q =
Qabcs(sa, sb, sc);
728 F =
sqrt((2 * z) / (1 + z));
731 F =
sqrt((13 * z * z) / (9 + 3 * z + z * z));
739 for (
int i = 0; i != 4; i++) {
740 pa[i] = daug1[i] + daug2[i];
741 qa[i] = daug1[i] - daug2[i];
745 for (
int i = 0; i != 4; i++) {
746 t1[i] = qa[i] - pq / p * pa[i];
753 calt1(daug1, daug2, t1);
755 for (
int i = 0; i != 4; i++) {
756 pa[i] = daug1[i] + daug2[i];
759 for (
int i = 0; i != 4; i++) {
760 for (
int j = 0; j != 4; j++) {
761 t2[i][j] = t1[i] * t1[j] - 1.0 / 3 * r * (G[i][j] - pa[i] * pa[j] / p);
double mD
Fixed parameters.
double d(double mass, const double q0) const
d function in Gounaris-Sakurai lineshape
EvtComplex propagatorRBW(double mass, double width, const double sa, const double sb, const double sc, const double r, const int l) const
Relativistic Breit-Wigner Lineshape Function.
double dh(double mass, const double q0) const
derivative h function in Gounaris-Sakurai lineshape
double calPDF(double *Km, double *Pip1, double *Pip2, double *Pim)
Probability distribution function of the decay.
EvtComplex D2VV(const double *P1, const double *P2, const double *P3, const double *P4, int *g)
Amplitude modes.
double f(double mass, const double sx, const double q0, const double q) const
f function in Gounaris-Sakurai lineshape
EvtComplex propagatorGS(double mass, double width, const double sa, const double sb, const double sc, const double r, const int l) const
Gounaris-Sakurai lineshape Function.
double dot(const double *a1, const double *a2) const
Four-Vector Scalar Product.
void calt1(const double *daug1, const double *daug2, double *t1) const
Covariant Spin-1 Projector.
void calt2(const double *daug1, const double *daug2, double(*t2)[4]) const
Covariant Spin-2 Projector.
double Qabcs(const double sa, const double sb, const double sc) const
Magnitudes of daughter particle momenta in the rest system of the mother particle.
EvtComplex KPiSFormfactor(const double sa, const double sb, const double sc, const double r)
K pi S-wave form factor.
double barrier(const double l, const double sa, const double sb, const double sc, const double r) const
Blatt-Weisskopf barrier factors.
double atan(double a)
atan for double
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.
double wid(double mass, const double sa, const double sb, const double sc, const double r, const int l) const
Energy dependent width.
double sqrt(double a)
sqrt for double
EvtComplex propogator(double mass, double width, const double sx) const
Relativistic Breit-Wigner Lineshape Function (Fixed Width)
double h(const double m, const double q) const
h function in Gounaris-Sakurai lineshape
Abstract base class for different kinds of events.