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/EvtD0ToKpipi0pi0.h>
30 EvtD0ToKpipi0pi0::~EvtD0ToKpipi0pi0() {}
32 std::string EvtD0ToKpipi0pi0::getName()
34 return "D0ToKpipi0pi0";
37 EvtDecayBase* EvtD0ToKpipi0pi0::clone()
39 return new EvtD0ToKpipi0pi0;
42 void EvtD0ToKpipi0pi0::init()
46 checkSpinParent(EvtSpinType::SCALAR);
54 mod[0] = 1; rho[0] = 2.02; phi[0] = -0.75;
55 mod[1] = 1; rho[1] = 1.66; phi[1] = -2.90;
56 mod[2] = 0; rho[2] = 0; phi[2] = 0;
57 mod[3] = 0; rho[3] = 0; phi[3] = 0;
58 mod[4] = 0; rho[4] = 0; phi[4] = 0;
59 mod[5] = 0; rho[5] = 0; phi[5] = 0;
60 mod[6] = 0; rho[6] = 0; phi[6] = 0;
61 mod[7] = 1; rho[7] = 1; phi[7] = 0;
62 mod[8] = 1; rho[8] = 0.842; phi[8] = -2.05;
63 mod[9] = 1; rho[9] = 0.0218; phi[9] = 1.84;
64 mod[10] = 0; rho[10] = 0; phi[10] = 0;
65 mod[11] = 0; rho[11] = 0; phi[11] = 0;
66 mod[12] = 0; rho[12] = 0; phi[12] = 0;
67 mod[13] = 1; rho[13] = 0.0336; phi[13] = -1.55;
68 mod[14] = 1; rho[14] = 0.109; phi[14] = -1.35;
69 mod[15] = 1; rho[15] = 0.196; phi[15] = -2.07;
70 mod[16] = 0; rho[16] = 0; phi[16] = 0;
71 mod[17] = 0; rho[17] = 0; phi[17] = 0;
72 mod[18] = 0; rho[18] = 0; phi[18] = 0;
73 mod[19] = 1; rho[19] = 0.363; phi[19] = 1.93;
74 mod[20] = 0; rho[20] = 0; phi[20] = 0;
75 mod[21] = 0; rho[21] = 0; phi[21] = 0;
76 mod[22] = 0; rho[22] = 0; phi[22] = 0;
77 mod[23] = 1; rho[23] = 0.555; phi[23] = 0.44;
78 mod[24] = 1; rho[24] = 0.526; phi[24] = -1.84;
79 mod[25] = 0; rho[25] = 0; phi[25] = 0;
80 mod[26] = 1; rho[26] = 1; phi[26] = 0.64;
81 mod[27] = 0; rho[27] = 0; phi[27] = 0;
82 mod[28] = 0; rho[28] = 0; phi[28] = 0;
83 mod[29] = 1; rho[29] = 3.34; phi[29] = -0.02;
84 mod[30] = 0; rho[30] = 0; phi[30] = 0;
85 mod[31] = 0; rho[31] = 0; phi[31] = 0;
86 mod[32] = 0; rho[32] = 0; phi[32] = 0;
87 mod[33] = 0; rho[33] = 0; phi[33] = 0;
88 mod[34] = 1; rho[34] = 1.76; phi[34] = -2.39;
89 mod[35] = 1; rho[35] = 0.175; phi[35] = 1.59;
90 mod[36] = 1; rho[36] = 0.397; phi[36] = 1.45;
91 mod[37] = 0; rho[37] = 0; phi[37] = 0;
92 mod[38] = 0; rho[38] = 0; phi[38] = 0;
93 mod[39] = 0; rho[39] = 0; phi[39] = 0;
94 mod[40] = 0; rho[40] = 0; phi[40] = 0;
95 mod[41] = 1; rho[41] = 1.02; phi[41] = 0.52;
96 mod[42] = 0; rho[42] = 0; phi[42] = 0;
97 mod[43] = 0; rho[43] = 0; phi[43] = 0;
98 mod[44] = 0; rho[44] = 0; phi[44] = 0;
99 mod[45] = 0; rho[45] = 0; phi[45] = 0;
100 mod[46] = 1; rho[46] = 0.146; phi[46] = 1.24;
101 mod[47] = 1; rho[47] = 0.0978; phi[47] = -2.89;
102 mod[48] = 1; rho[48] = 0.233; phi[48] = 2.41;
103 mod[49] = 0; rho[49] = 0; phi[49] = 0;
104 mod[50] = 1; rho[50] = 0.424; phi[50] = -0.94;
105 mod[51] = 1; rho[51] = 1.03; phi[51] = -1.93;
106 mod[52] = 0; rho[52] = 0; phi[52] = 0;
107 mod[53] = 0; rho[53] = 0; phi[53] = 0;
108 mod[54] = 1; rho[54] = 0.474; phi[54] = -1.17;
109 mod[55] = 0; rho[55] = 0; phi[55] = 0;
110 mod[56] = 0; rho[56] = 0; phi[56] = 0;
111 mod[57] = 0; rho[57] = 0; phi[57] = 0;
112 mod[58] = 0; rho[58] = 0; phi[58] = 0;
113 mod[59] = 0; rho[59] = 0; phi[59] = 0;
114 mod[60] = 0; rho[60] = 0; phi[60] = 0;
115 mod[61] = 1; rho[61] = 6.74; phi[61] = -1.74;
116 mod[62] = 0; rho[62] = 0; phi[62] = 0;
117 mod[63] = 0; rho[63] = 0; phi[63] = 0;
118 mod[64] = 0; rho[64] = 0; phi[64] = 0;
119 mod[65] = 0; rho[65] = 0; phi[65] = 0;
120 mod[66] = 1; rho[66] = 1.54; phi[66] = -2.93;
121 mod[67] = 1; rho[67] = 1.36; phi[67] = 2.23;
123 mass[0] = 1.23; width[0] = 0.50204;
124 mass[1] = 1.2723; width[1] = 0.09;
125 mass[2] = 0.89166; width[2] = 0.0508;
126 mass[3] = 0.89581; width[3] = 0.0474;
127 mass[4] = 0.77511; width[4] = 0.1491;
137 mass_Pi0 = 0.1349766;
146 int GG[4][4] = { {1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1} };
147 int EE[4][4][4][4] = {
148 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
149 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, -1, 0}},
150 {{0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 0, 0}, {0, 1, 0, 0} },
151 {{0, 0, 0, 0}, {0, 0, 1, 0}, {0, -1, 0, 0}, {0, 0, 0, 0} }
153 { {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, 1, 0} },
154 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
155 {{0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}},
156 {{0, 0, -1, 0}, {0, 0, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0} }
158 { {{0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0}, {0, -1, 0, 0}},
159 {{0, 0, 0, -1}, {0, 0, 0, 0}, {0, 0, 0, 0}, {1, 0, 0, 0} },
160 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
161 {{0, 1, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
163 { {{0, 0, 0, 0}, {0, 0, -1, 0}, {0, 1, 0, 0}, {0, 0, 0, 0} },
164 {{0, 0, 1, 0}, {0, 0, 0, 0}, {-1, 0, 0, 0}, {0, 0, 0, 0} },
165 {{0, -1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} },
166 {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} }
169 for (
int i = 0; i < 4; i++) {
170 for (
int j = 0; j < 4; j++) {
172 for (
int k = 0; k < 4; k++) {
173 for (
int l = 0; l < 4; l++) {
174 E[i][j][k][l] = EE[i][j][k][l];
181 void EvtD0ToKpipi0pi0::initProbMax()
186 void EvtD0ToKpipi0pi0::decay(EvtParticle* p)
207 p->initializePhaseSpace(getNDaug(), getDaugs());
208 EvtVector4R Km0 = p->getDaug(0)->getP4();
209 EvtVector4R pi1 = p->getDaug(1)->getP4();
210 EvtVector4R pi2 = p->getDaug(2)->getP4();
211 EvtVector4R pi3 = p->getDaug(3)->getP4();
213 double Km[4], Pip[4], Pi01[4], Pi02[4];
214 Km[0] = Km0.get(0); Pip[0] = pi1.get(0); Pi01[0] = pi2.get(0); Pi02[0] = pi3.get(0);
215 Km[1] = Km0.get(1); Pip[1] = pi1.get(1); Pi01[1] = pi2.get(1); Pi02[1] = pi3.get(1);
216 Km[2] = Km0.get(2); Pip[2] = pi1.get(2); Pi01[2] = pi2.get(2); Pi02[2] = pi3.get(2);
217 Km[3] = Km0.get(3); Pip[3] = pi1.get(3); Pi01[3] = pi2.get(3); Pi02[3] = pi3.get(3);
218 double prob =
PDF(Km, Pip, Pi01, Pi02);
225 Km[0] =
sqrt(mass_Kaon * mass_Kaon + Km[1] * Km[1] + Km[2] * Km[2] + Km[3] * Km[3]);
226 Pip[0] =
sqrt(mass_Pion * mass_Pion + Pip[1] * Pip[1] + Pip[2] * Pip[2] + Pip[3] * Pip[3]);
227 Pi01[0] =
sqrt(mass_Pi0 * mass_Pi0 + Pi01[1] * Pi01[1] + Pi01[2] * Pi01[2] + Pi01[3] * Pi01[3]);
228 Pi02[0] =
sqrt(mass_Pi0 * mass_Pi0 + Pi02[1] * Pi02[1] + Pi02[2] * Pi02[2] + Pi02[3] * Pi02[3]);
233 PDF[0] = PHSP(Km, Pip) + PHSP(Km, Pip);
234 PDF[1] = PHSP(Km, Pi01) + PHSP(Km, Pi02);
242 g[0] = 1; g[1] = 1; g[2] = 0;
243 PDF[7] = D2AP_A2VP(Km, Pi01, Pip, Pi02, g, 0) + D2AP_A2VP(Km, Pi02, Pip, Pi01, g, 0);
245 PDF[8] = D2AP_A2VP(Km, Pi01, Pip, Pi02, g, 0) + D2AP_A2VP(Km, Pi02, Pip, Pi01, g, 0);
247 PDF[9] = D2AP_A2VP(Pip, Pi01, Km, Pi02, g, 1) + D2AP_A2VP(Pip, Pi02, Km, Pi01, g, 1);
255 PDF[13] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
257 PDF[14] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
259 PDF[15] = D2AP_A2VP(Pi01, Km, Pip, Pi02, g, 3) + D2AP_A2VP(Pi02, Km, Pip, Pi01, g, 3);
262 g[0] = 1; g[1] = 0; g[2] = 0;
267 PDF[19] = D2AP_A2VP(Pip, Pi01, Km, Pi02, g, 1) + D2AP_A2VP(Pip, Pi02, Km, Pi01, g, 1);
275 PDF[23] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
277 PDF[24] = D2AP_A2VP(Pi01, Pi02, Km, Pip, g, 31) + D2AP_A2VP(Pi02, Pi01, Km, Pip, g, 31);
281 PDF[26] = D2AP_A2VP(Pi01, Km, Pip, Pi02, g, 3) + D2AP_A2VP(Pi02, Km, Pip, Pi01, g, 3);
285 PDF[29] = D2AP_A2SP(Pi01, Pi02, Km, Pip, 1) + D2AP_A2SP(Pi02, Pi01, Km, Pip, 1);
291 PDF[34] = D2VS(Pip, Pi01, Km, Pi02, 1, 0) + D2VS(Pip, Pi02, Km, Pi01, 1, 0);
292 PDF[35] = D2VS(Km, Pi01, Pip, Pi02, 1, 1) + D2VS(Km, Pi02, Pip, Pi01, 1, 1);
293 PDF[36] = D2VS(Km, Pip, Pi01, Pi02, 1, 11) + D2VS(Km, Pip, Pi02, Pi01, 1, 11);
299 PDF[41] = D2VP_V2VP(Pi01, Pip, Km, Pi02, 0) + D2VP_V2VP(Pi02, Pip, Km, Pi01, 0);
305 g[0] = 1; g[1] = 1; g[2] = 0;
306 PDF[46] =
D2VV(Km, Pi01, Pip, Pi02, g, 0) +
D2VV(Km, Pi02, Pip, Pi01, g, 0);
308 PDF[47] =
D2VV(Km, Pi01, Pip, Pi02, g, 0) +
D2VV(Km, Pi02, Pip, Pi01, g, 0);
310 PDF[48] =
D2VV(Km, Pi01, Pip, Pi02, g, 0) +
D2VV(Km, Pi02, Pip, Pi01, g, 0);
311 g[0] = 0; g[1] = 1; g[2] = 0;
314 PDF[50] =
D2VV(Km, Pi01, Pip, Pi02, g, 0) +
D2VV(Km, Pi02, Pip, Pi01, g, 0);
316 PDF[51] =
D2VV(Km, Pi01, Pip, Pi02, g, 0) +
D2VV(Km, Pi02, Pip, Pi01, g, 0);
317 g[0] = 1; g[1] = 0; g[2] = 0;
322 PDF[54] =
D2VV(Km, Pi01, Pip, Pi02, g, 0) +
D2VV(Km, Pi02, Pip, Pi01, g, 0);
323 g[0] = 1; g[1] = 0; g[2] = 0;
329 g[0] = 0; g[1] = 0; g[2] = 0;
335 g[0] = 0; g[1] = 0; g[2] = 0;
336 PDF[61] =
D2VV(Km, Pi01, Pip, Pi02, g, 0) +
D2VV(Km, Pi02, Pip, Pi01, g, 0);
344 PDF[66] = D2TS(Pi02, Pi01, Km, Pip, 1) + D2TS(Pi01, Pi02, Km, Pip, 1);
345 PDF[67] = D2TS(Pip, Pi01, Km, Pi02, 11) + D2TS(Pip, Pi02, Km, Pi01, 11);
349 EvtComplex pdf, module;
350 pdf = EvtComplex(0, 0);
351 for (
int i = 0; i < 68; i++) {
352 if (mod[i] == 0)
continue;
353 cof = EvtComplex(rho[i] * cos(phi[i]), rho[i] * sin(phi[i]));
354 pdf = pdf + cof *
PDF[i];
356 module = conj(pdf) * pdf;
358 value = real(module);
359 return (value <= 0) ? 1e-20 : value;
364 double m1430 = 1.463;
365 double sa0 = m1430 * m1430;
366 double w1430 = 0.233;
367 double q0 = (sa0 + sb - sc) * (sa0 + sb - sc) / (4 * sa0) - sb;
368 if (q0 < 0) q0 = 1e-16;
369 double qs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
371 double Width = w1430 * q * m1430 /
sqrt(sa * q0) * r / r;
372 double temp_R =
atan(m1430 * Width / (sa0 - sa));
373 if (temp_R < 0) temp_R += math_pi;
374 double deltaR = -5.31 + temp_R;
375 double temp_F =
atan(2 * 1.07 * q / (2 + (-1.8) * 1.07 * qs));
376 if (temp_F < 0) temp_F += math_pi;
377 double deltaF = 2.33 + temp_F;
378 EvtComplex cR(cos(deltaR), sin(deltaR));
379 EvtComplex cF(cos(deltaF), sin(deltaF));
380 EvtComplex amp = 0.8 * sin(deltaF) * cF + sin(deltaR) * cR * cF * cF;
383 EvtComplex
EvtD0ToKpipi0pi0::D2VV(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
int* g,
const int flag)
385 double t1V1[4], t1V2[4], t1D[4], t2D[4][4];
387 EvtComplex amp_PDF(0, 0);
390 double sa[3], sb[3], sc[3], B[3];
391 double pV1[4], pV2[4], pD[4];
392 for (
int i = 0; i != 4; i++) {
393 pV1[i] = P1[i] + P2[i];
394 pV2[i] = P3[i] + P4[i];
395 pD[i] = pV1[i] + pV2[i];
407 if (flag == 0)pro[0] =
propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
408 if (flag == 1)pro[0] =
propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
411 if (flag == 0) pro[1] =
propagatorGS(mass[4], width[4], sa[1], sb[1], sc[1], rRes, 1);
412 if (flag == 1) pro[1] = 1;
414 if (g[0] == 0) pro[0] = 1;
415 if (g[1] == 0) pro[1] = 1;
421 for (
int i = 0; i != 4; i++) {
422 temp_PDF += (G[i][i]) * t1V1[i] * t1V2[i];
428 for (
int i = 0; i != 4; i++) {
429 for (
int j = 0; j != 4; j++) {
430 for (
int k = 0; k != 4; k++) {
431 for (
int l = 0; l != 4; l++) {
432 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]);
441 for (
int i = 0; i != 4; i++) {
442 for (
int j = 0; j != 4; j++) {
443 temp_PDF += t2D[i][j] * t1V1[i] * t1V2[j] * (G[i][i]) * (G[j][j]);
448 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
452 EvtComplex EvtD0ToKpipi0pi0::D2AP_A2VP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
int* g,
456 EvtComplex amp_PDF(0, 0);
458 double t1V[4], t1D[4], t2A[4][4];
459 double sa[3], sb[3], sc[3], B[3] = {0, 0, 0};
460 double pV[4], pA[4], pD[4];
461 for (
int i = 0; i != 4; i++) {
462 pV[i] = P3[i] + P4[i];
463 pA[i] = pV[i] + P2[i];
464 pD[i] = pA[i] + P1[i];
476 if (flag == 0 || flag == 3) pro[0] =
propagatorGS(mass[4], width[4], sa[0], sb[0], sc[0], rRes, 1);
477 else if (flag == 1 || flag == 21) pro[0] =
propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
478 else if (flag == 31) pro[0] =
propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
479 }
else if (g[0] == 0) pro[0] = 1;
481 if (flag == 0) pro[1] =
propagatorRBW(mass[0], width[0], sa[1], sb[1], sc[1], rRes, g[2]);
482 if (flag == 1 || flag == 21 || flag == 31 || flag == 3) pro[1] =
propagatorRBW(mass[1], width[1], sa[1], sb[1], sc[1], rRes, g[2]);
483 }
else if (g[1] == 0) pro[1] = 1;
489 for (
int i = 0; i != 4; i++) {
490 for (
int j = 0; j != 4; j++) {
491 temp_PDF += t1D[i] * (G[i][j] - pA[i] * pA[j] / sa[1]) * t1V[j] * (G[i][i]) * (G[j][j]);
495 }
else if (g[2] == 2) {
497 for (
int i = 0; i != 4; i++) {
498 for (
int j = 0; j != 4; j++) {
499 temp_PDF += t1D[i] * t2A[i][j] * t1V[j] * (G[i][i]) * (G[j][j]);
504 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro[0] * pro[1];
508 EvtComplex EvtD0ToKpipi0pi0::D2AP_A2SP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
512 EvtComplex amp_PDF(0, 0);
514 double sa[3], sb[3], sc[3], B[3];
515 double t1D[4], t1A[4];
516 double pS[4], pA[4], pD[4];
517 for (
int i = 0; i != 4; i++) {
518 pS[i] = P3[i] + P4[i];
519 pA[i] = pS[i] + P2[i];
520 pD[i] = pA[i] + P1[i];
535 for (
int i = 0; i != 4; i++) {
536 temp_PDF += t1D[i] * t1A[i] * (G[i][i]);
538 amp_PDF = temp_PDF * B[1] * B[2];
539 if (flag == 1 || flag == 11 || flag == 21) amp_PDF = amp_PDF *
KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
543 EvtComplex EvtD0ToKpipi0pi0::D2PP_P2VP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
551 EvtComplex amp(0, 0);
553 double sa[3], sb[3], sc[3], B[3];
555 double pV[4], pP[4], pD[4];
556 for (
int i = 0; i != 4; i++) {
557 pV[i] = P3[i] + P4[i];
558 pP[i] = pV[i] + P2[i];
559 pD[i] = pP[i] + P1[i];
572 if (flag == 0) prop =
propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
573 else if (flag == 10 || 20) prop =
propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
574 else if (flag == 1 || 11) prop =
propagatorGS(mass[4], width[4], sa[0], sb[0], sc[0], rRes, 1);
576 for (
int i = 0; i != 4; i++) {
577 temp_PDF += P2[i] * t1V[i] * (G[i][i]);
579 amp = temp_PDF * B[0] * B[1] * prop;
583 EvtComplex EvtD0ToKpipi0pi0::D2VP_V2VP(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
586 EvtComplex amp_PDF(0, 0);
588 double sa[3], sb[3], sc[3], B[3];
589 double pV1[4], pV2[4], qV1[4], qV2[4], pD[4];
590 for (
int i = 0; i != 4; i++) {
591 pV2[i] = P3[i] + P4[i];
592 qV2[i] = P3[i] - P4[i];
593 pV1[i] = pV2[i] + P2[i];
594 qV1[i] = pV2[i] - P2[i];
595 pD[i] = pV1[i] + P1[i];
597 for (
int i = 0; i != 4; i++) {
598 for (
int j = 0; j != 4; j++) {
599 for (
int k = 0; k != 4; k++) {
600 for (
int l = 0; l != 4; l++) {
601 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]);
615 if (flag == 0 || flag == 10) pro =
propagatorRBW(mass[2], width[2], sa[0], sb[0], sc[0], rRes, 1);
616 else if (flag == 20) pro =
propagatorRBW(mass[3], width[3], sa[0], sb[0], sc[0], rRes, 1);
617 else if (flag == 1 || flag == 2) pro =
propagatorGS(mass[4], width[4], sa[0], sb[0], sc[0], rRes, 1);
621 amp_PDF = temp_PDF * B[0] * B[1] * B[2] * pro;
625 EvtComplex EvtD0ToKpipi0pi0::D2VS(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
int g,
const int flag)
628 EvtComplex amp_PDF(0, 0);
630 double sa[3], sb[3], sc[3], B[3];
631 double t1D[4], t1V[4];
632 double pS[4], pV[4], pD[4];
633 for (
int i = 0; i != 4; i++) {
634 pS[i] = P3[i] + P4[i];
635 pV[i] = P1[i] + P2[i];
636 pD[i] = pS[i] + pV[i];
648 if (flag == 0) pro =
propagatorGS(mass[4], width[4], sa[1], sb[1], sc[1], rRes, 1);
649 else if (flag == 1) pro =
propagatorRBW(mass[2], width[2], sa[1], sb[1], sc[1], rRes, 1);
650 else if (flag == 11) pro =
propagatorRBW(mass[3], width[3], sa[1], sb[1], sc[1], rRes, 1);
651 else if (flag == 10) pro = 1;
652 }
else if (g == 0) pro = 1;
657 for (
int i = 0; i != 4; i++) {
658 temp_PDF += G[i][i] * t1D[i] * t1V[i];
660 amp_PDF = temp_PDF * B[1] * B[2] * pro;
661 if (flag == 0 || flag == 10) amp_PDF *=
KPiSFormfactor(sa[0], sb[0], sc[0], rRes);
666 EvtComplex EvtD0ToKpipi0pi0::D2TS(
const double* P1,
const double* P2,
const double* P3,
const double* P4,
const int flag)
670 EvtComplex amp_PDF(0, 0);
671 double sa[3], sb[3], sc[3], B[3];
672 double t2D[4][4], t2T[4][4];
673 double pS[4], pT[4], pD[4];
674 for (
int i = 0; i != 4; i++) {
675 pS[i] = P3[i] + P4[i];
676 pT[i] = P1[i] + P2[i];
677 pD[i] = pT[i] + pS[i];
692 for (
int i = 0; i != 4; i++) {
693 for (
int j = 0; j != 4; j++) {
694 temp_PDF += t2D[i][j] * t2T[j][i] * (G[i][i]) * (G[j][j]);
697 amp_PDF = temp_PDF * B[0] * B[2];
698 if (flag == 1 || flag == 11) { amp_PDF = amp_PDF *
KPiSFormfactor(sa[1], sb[1], sc[1], rRes);}
702 EvtComplex EvtD0ToKpipi0pi0::PHSP(
double* P1,
double* P2)
704 EvtComplex amp_PDF(0, 0);
707 for (
int i = 0; i != 4; i++) {
708 KPi[i] = P1[i] + P2[i];
719 double widm(0.), q(0.), q0(0.);
720 double sa0 = Mass * Mass;
722 q =
Qabcs(sa, sb, sc);
723 q0 =
Qabcs(sa0, sb, sc);
730 if (l == 1) F =
sqrt((1 + z0) / (1 + z));
731 if (l == 2) F =
sqrt((9 + 3 * z0 + z0 * z0) / (9 + 3 * z + z * z));
732 widm = pow(t, l + 0.5) * Mass / m * F * F;
738 h = 2 / pi * q / m * log((m + 2 * q) / (2 * mpi));
743 double dh =
h(Mass, q0) * (1.0 / (8 * q0 * q0) - 1.0 / (2 * Mass * Mass)) + 1.0 / (2 * pi * Mass * Mass);
749 double f = Mass * Mass / (pow(q0, 3)) * (q * q * (
h(m, q) -
h(Mass, q0)) + (Mass * Mass - sx) * q0 * q0 *
dh(Mass,
755 double d = 3.0 / pi * mpi * mpi / (q0 * q0) * log((Mass + 2 * q0) / (2 * mpi)) + Mass / (2 * pi * q0) - (mpi * mpi * Mass) /
763 EvtComplex prop = 1.0 / (Mass * Mass - sa - ci * Mass * Width *
energyDependentWidth(Mass, sa, sb, sc, r,
771 double q =
Qabcs(sa, sb, sc);
772 double sa0 = Mass * Mass;
773 double q0 =
Qabcs(sa0, sb, sc);
776 EvtComplex prop = (1 +
d(Mass, q0) * Width / Mass) / (Mass * Mass - sa + Width *
f(Mass, sa, q0,
784 for (
int i = 0; i != 4; i++) {
785 dot += a1[i] * a2[i] * G[i][i];
791 double Qabcs = (sa + sb - sc) * (sa + sb - sc) / (4 * sa) - sb;
797 double q =
Qabcs(sa, sb, sc);
806 F =
sqrt((2 * z) / (1 + z));
809 F =
sqrt((13 * z * z) / (9 + 3 * z + z * z));
817 for (
int i = 0; i != 4; i++) {
818 pa[i] = daug1[i] + daug2[i];
819 qa[i] = daug1[i] - daug2[i];
823 for (
int i = 0; i != 4; i++) {
824 t1[i] = qa[i] - pq / p * pa[i];
833 for (
int i = 0; i != 4; i++) {
834 pa[i] = daug1[i] + daug2[i];
837 for (
int i = 0; i != 4; i++) {
838 for (
int j = 0; j != 4; j++) {
839 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 BWBarrierFactor(const double l, const double sa, const double sb, const double sc, const double r) const
Blatt-Weisskopf barrier factors.
double f(double mass, const double sx, const double q0, const double q) const
f function in Gounaris-Sakurai lineshape
void covariantTensor1(const double *daug1, const double *daug2, double *t1) const
Covariant Spin-1 Projector.
double LorentzDotProduct(const double *a1, const double *a2) const
Four-vector dot product.
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.
EvtComplex D2VV(const double *P1, const double *P2, const double *P3, const double *P4, int *g, const int flag)
Amplitude modes.
double PDF(double *Km, double *Pip, double *Pi01, double *Pi02)
Probability distribution function of the decay.
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 atan(double a)
atan for double
#define B2_EVTGEN_REGISTER_MODEL(classname)
Class to register B2_EVTGEN_REGISTER_MODEL.
void covariantTensor2(const double *daug1, const double *daug2, double(*t2)[4]) const
Covariant Spin-2 Projector.
double sqrt(double a)
sqrt for double
double h(const double m, const double q) const
h function in Gounaris-Sakurai lineshape
T dot(GeneralVector< T > a, GeneralVector< T > b)
dot product of two general vectors
double energyDependentWidth(const double mass, const double sa, const double sb, const double sc, const double r, const int l) const
Energy dependent width.
Abstract base class for different kinds of events.